2009-08-10 7 views
25

私は、次のXMLを持っている:.NETの逆シリアル化中に名前空間接頭辞をサポートするXMLシリアル化属性を指定する方法を教えてください。

<person xmlns:a="http://example.com" xmlns:b="http://sample.net"> 
    <a:fName>John</a:fName> 
    <a:lName>Wayne</a:lName> 
    <b:age>37</b:age> 
</person> 

はどうやって説明したシナリオをサポートするために、クラス上のXMLシリアル化の属性を定義していますか?

答えて

54

名前空間がXmlElementの属性を使用することによって、各フィールドに必要な名前空間を指定する必要があります。これにより、フィールドを特定の名前空間に関連付けることができますが、接頭辞の関連付けを取得するには、タイプXmlNamespaceDeclarationsを返すクラスのプロパティも公開する必要があります。

は、以下のドキュメントとサンプルを参照してください:

[XmlRoot(ElementName="person")] 
    public class Person 
    { 

     [XmlElement(Namespace="http://example.com")] 
     public string fname; 

     [XmlElement(Namespace="http://sample.com")] 
     public string lname; 

     [XmlNamespaceDeclarations] 
     public XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces(); 

     public Person() 
     { 
      xmlns.Add("a", "http://example.com"); 
      xmlns.Add("b", "http://sample.com"); 
     } 
    } 
+0

それだ、ありがとう! –

+1

他の人のための1つのメモは、私はまだとにかくそれを良い練習と見なしても、あなたはデシリアライゼーションだけを行う場合、XmlSerializerNamespacesのthingyは必要ではないようです。 –

+1

伝説私はこれの年齢を探していました! – jcvandan

関連する問題