xmlNode zu Objekten

9

Ich habe mit einem Java-basierten REST-Webservice von Drittanbietern gearbeitet, der ein Array von xmlNodes zurückgibt.

Der xmlNode [] repräsentiert ein Objekt und ich versuche herauszufinden, wie der xmlNode [] im Objekt am besten deserialisiert wird. ist es, zuerst ein xmlDocument und das Deserialize?

aufzubauen

Danke

    
76mel 13.10.2009, 23:15
quelle

3 Antworten

22

Wenn Sie die WCF Rest Starter Kit-Vorschau installiert haben, gibt es einen ordentlichen Trick:

  • öffne Visual Studio
  • Wählen Sie den Inhalt Ihres XML-Knotens aus (das XML, das einen Ihrer Knoten bildet) und kopieren Sie ihn in die Zwischenablage
  • Wählen Sie in Visual Studio im Menü "Bearbeiten" die Option "XML als Typen einfügen"

Dadurch wird Ihr in der Zwischenablage enthaltenes XML in Ihr Projekt als C # -Klasse eingefügt, die genau dieses XML deserialisieren kann. Ziemlich geschickt!

Siehe diese Blogposts dazu:

Das sollte Ihnen viel Tipparbeit ersparen und das Leben viel einfacher machen!

UPDATE:
OK, Sie haben Ihre Klassen bereits aus dem XML generiert, das Sie zurück erhalten. Jetzt müssen Sie ein XmlNode in Ihre Klasse konvertieren.

Sie müssen so etwas tun:

%Vor%

Sie müssen die XML-Repräsentation (Eigenschaft .OuterXml ) von XmlNode in einen Stream (hier ein MemoryStream ) schreiben und dann das XmlSerializer verwenden, um das Objekt aus diesem Stream zu serialisieren.

Sie können es mit der generischen Methode tun und

aufrufen %Vor%

oder Sie könnten diesen Code sogar in eine Erweiterungsmethode für die Klasse XmlNode umwandeln, so dass Sie schreiben könnten:

%Vor%

Marc

    
marc_s 14.10.2009, 07:15
quelle
5

Vielleicht ist das zu spät, um hier zu antworten, aber es wird anderen helfen:

Hier ist die Lösung, die Sie Deserialize vom XML-Knoten erreichen können.

%Vor%

Laden Sie zuerst den XML-Code in XmlDocument Object und suchen Sie dann den übergeordneten Knoten, den Sie deserialisieren möchten, so wie ich SystemInfo -Objektknoten aus dem gesamten XML-Dokument haben möchte.

Sobald Sie feststellen, dass Sie ein XmlSerializer -Objekt mit dem spezifischen Klassentyp erstellen, den Sie wünschen.

Übergeben Sie jetzt einfach new XmlNodeReader(xmlNode) an die Methode Deserialize . Sie erhalten die Objekte in einem Klassenobjekt, genau wie ich syso object mit XML-Werten gefüllt habe.

Happy Coding:)

    
Khawaja Asim 27.09.2016 07:10
quelle
-1

Der einfachste Weg dazu wäre, die eingebaute System.Xml.Serialization.XmlSerializer-Klasse in .NET zu verwenden. Eine Google-Suche auf XmlSerializer wird eine Menge Tutorials bieten, die Sie verwenden können, um ein Tutorial zu finden, das für Sie funktioniert.

    
Jeffrey Lott 14.10.2009 01:58
quelle

Tags und Links