2009-07-16 1 views
0

Ich muss Informationen an Dritte in einem XML-Format senden, das sie angegeben haben, eine sehr häufige Aufgabe, bin ich mir sicher.Wie kann ich einen Objektgraphen in ein externes XML-Format überführen?

Ich habe eine Reihe von XSD-Dateien und mit XSD.exe habe ich eine Reihe von Typen erstellt. Zur Erzeugung des XML ich die Werte aus den Typen innerhalb meiner Domain auf die 3rd-Party-Typen zuzuordnen:

public ExternalBar Map(InternalFoo foo) { 
    var bar = new ExternalBar; 

    bar.GivenName = foo.FirstName; 
    bar.FamilyName = foo.LastName; 

    return bar; 

} 

Ich werde dann die XMLSerializer verwenden, um die Dateien zu generieren, wahrscheinlich um sie gegen die XSD überprüft, bevor sie freigegeben wird.

Diese Methode ist jedoch sehr manuell und ich frage mich, ob es eine bessere Möglichkeit gibt, das Framework oder externe Tools zu verwenden, um die Daten zuzuordnen und die Dateien zu erstellen.

+0

Handbuch? Sie möchten es nur per Drag & Drop erzeugen? – Grzenio

+0

@Grzenio, nein nicht per Drag & Drop. Ich frage mich, ob es Werkzeuge im Rahmen gibt, um zu helfen, die ich nicht kenne, z. der System.Xml.Linq-Namespace. –

Antwort

0

LINQ to XML funktioniert ziemlich gut für diese ... z.

XElement results = new XElement("ExternalFoos", 
    from f in internalFoos 
    select new XElement("ExternalFoo", new XAttribute[] { 
     new XAttribute("GivenName", f.FirstName), 
     new XAttribute("FamilyName", f.LastName) })); 
0

Zunächst gehe ich davon aus, dass die Objekteigenschaften in Ihrer vorhandenen Domäne den Drittanbietertypen ohne viel Manipulation zugeordnet sind, mit Ausnahme der wiederholten Eigenschaftenzuweisungen.

Also ich würde empfehlen, nur Standard-XML-Serialisierung Ihrer Domain-Struktur (generieren Sie ein Ausgangsschema für Ihre Klassen mit XSD), dann das Ergebnis über eine Reihe von XSLT Stylesheets nachbearbeiten. Überprüfen Sie anschließend nach der Verarbeitung die resultierenden XML-Dokumente anhand der Schemas von Drittanbietern.

Es wird wahrscheinlich komplizierter als das, weil es wirklich auf die Komplexität der Zuordnung zwischen den Objektdomänen abhängt, aber das ist eine Methode, die ich in der Vergangenheit erfolgreich verwendet habe.

Soweit GUI-Tools betrifft, habe ich gehört (aber nicht selbst verwendet), dass Stylus Studio ist ziemlich gut für Schema-zu-Schema-Mappings (Screenshot here).