2009-10-09 14 views
5

要素 "thes"のネームスペース "dc"を使用するZthes formatデシリアライザ(System.Xml.Serialization)に仕上げを行います。名前空間を持たないため、すべての用語要素はデシリアライズしていますが、「thes」要素に名前空間があることをデシリアライザに伝える方法はわかりません。C#(System.Xml.Serialization)でXML名前空間を逆シリアル化するにはどうすればよいですか?

これは私がやろうとしていることです(これはうまくいきません)ので、うまくいけば誰かが私に適切な構文を与えることができます。

[XmlElement("namespace:someElement")] 
public string SomeElement; 

答えて

8

は、ここでは、コードのこの作品は本当に助け

[XmlRoot("myObject")] 
public class MyObject 
{ 
    [XmlElement("myProp", Namespace = "http://www.whited.us")] 
    public string MyProp { get; set; } 

    [XmlAttribute("myOther", Namespace = "http://www.whited.us")] 
    public string MyOther { get; set; } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var xnames = new XmlSerializerNamespaces(); 
     xnames.Add("w", "http://www.whited.us"); 
     var xser = new XmlSerializer(typeof(MyObject)); 
     using (var ms = new MemoryStream()) 
     { 
      var myObj = new MyObject() 
      { 
       MyProp = "Hello", 
       MyOther = "World" 
      }; 
      xser.Serialize(ms, myObj, xnames); 
      var res = Encoding.ASCII.GetString(ms.ToArray()); 
      /* 
       <?xml version="1.0"?> 
       <myObject xmlns:w="http://www.whited.us" w:myOther="World"> 
        <w:myProp>Hello</w:myProp> 
       </myObject> 
      */ 
     } 
    } 
} 
+0

...あなたのための迅速なサンプルです。 Matthewに感謝します。 – Junto

+0

うれしい私は助けることができました! –

+0

OPの質問はシリアル化ではなくデシリアライズについてです。 deserializeメソッドは、XmlSerializerNamespacesパラメーターを使用しません。 –

1
[XmlElement("someElement", Namespace="namespace")] 
public string SomeElement; 

補遺:「名前空間」は、名前空間だけでなく、接頭辞の完全なURIであることを確認してください。

関連する問題