私はサードパーティ製のJavaベースのREST Webサービスで、xmlNodesの配列を返しています。xmlNode to objects
xmlNode []はオブジェクトを再提示し、オブジェクト内のxmlNode []を逆シリアル化する最適な方法を試していますか?最初にxmlDocumentを構築し、Deserializeを作成するのですか?
おかげ
私はサードパーティ製のJavaベースのREST Webサービスで、xmlNodesの配列を返しています。xmlNode to objects
xmlNode []はオブジェクトを再提示し、オブジェクト内のxmlNode []を逆シリアル化する最適な方法を試していますか?最初にxmlDocumentを構築し、Deserializeを作成するのですか?
おかげ
、巧妙なトリックがあります:
「タイプとして貼り付けXML」を選びますその正確なXMLをデシリアライズすることができます。かなり元気!
それについてのこれらのブログの記事を参照してください:あなたの入力の手間を節約し、生活が非常に簡単にする必要があります
!
UPDATE:
OK、あなたはすでにあなたが戻って取得XMLから生成されたあなたのクラスがあります。今度はあなたのクラスにXmlNode
を変換する必要があります。
あなたはこのような何かする必要があります:あなたは(ここではMemoryStream
)ストリームにXmlNode
のXML表現(プロパティ.OuterXml
)を記述する必要が
private static T ConvertNode<T>(XmlNode node) where T: class
{
MemoryStream stm = new MemoryStream();
StreamWriter stw = new StreamWriter(stm);
stw.Write(node.OuterXml);
stw.Flush();
stm.Position = 0;
XmlSerializer ser = new XmlSerializer(typeof(T));
T result = (ser.Deserialize(stm) as T);
return result;
}
をして、シリアル化するためにXmlSerializer
を使用そのストリームからオブジェクトを戻します。
あなたは、一般的な方法でそれを行うと
Customer myCustomer = ConvertNode<Customer>(xmlNode);
を呼び出すか、あなたが書くことができるので、あなたもXmlNode
クラスの拡張メソッドのいずれかにそのコードを回すことができることができます。
Customer myCustomer = xmlNode.ConvertNode<Customer>();
マルク
.NETでSystem.Xml.Serialization.XmlSerializerクラスに建て使用することですこれを行う最も簡単な方法。 XmlSerializerでのGoogle検索は、あなたのために働くチュートリアルを見つけるのに使うことができるたくさんのチュートリアルを提供します。あなたはWCF休憩スターターキットプレビューがインストールされている場合は
明らかで有用ではありません。もちろんXMLSerializerが必要ですが、XMLノードがあり、文字列やストリームはありません。幸いにも、Googleの検索では、この質問に対する他の有益な答えが提供されます。 – edc65
ここで答えが遅すぎるかもしれませんが、他の人に役立つでしょう:
XMLノードからDeserialize
にできる解決策は次のとおりです。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
XmlNode xmlNode = xmlDoc.SelectSingleNode("//SystemInfo");
XmlSerializer serial = new XmlSerializer(typeof(SystemInfo));
SystemInfo syso =(SystemInfo)serial.Deserialize(new XmlNodeReader(xmlNode));
まず負荷XmlDocument Object
にXML、その後、あなたはすべてのXML文書から、私はシステム情報対象ノードをしたいだけのようデシリアライズしたくなります親ノードを見つけます。
特定のクラスタイプのXmlSerializer
オブジェクトを作成したら、それを探してください。
は今ちょうどあなたがちょうど私がXML値を持つsyso
オブジェクトを取り込まようにクラスオブジェクトに移入するオブジェクトを取得します、デシリアライズ方法にnew XmlNodeReader(xmlNode)
を渡します。
ハッピーコーディング:)
こんにちは、私はすでにxsdのオブジェクトを持っていますので、このステップを行うのは本当にありません。私はxmlNodes [](シリアル化されたオブジェクト)から行く最善の方法を学びたいと思っています。 – 76mel