2009-10-09 6 views
5

Sadece "thes" öğesinde "dc" ad alanını kullanan Zthes format deserializer (System.Xml.Serialization) son rötuşlarımı yapıyorum. Tüm "terim" unsurları iyi bir şekilde serileştirmemekte, çünkü bunlar hiçbir isim alanına sahip değildir, ancak "thes" öğelerinin bir ad alanına sahip olduğunu desperizatöre nasıl söyleyeceğimi anlayamıyorum.C# (System.Xml.Serialization) içinde XML ad alanlarını nasıl deserialize edebilirim?

Yapmaya çalıştığım şey (çalışmıyor) bu yüzden birilerinin bana uygun sözdizimini vermesini umuyorum.

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

cevap

8

İşte Bu kod parçası gerçekten yardımcı

[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

... sizin için hızlı bir örnek. Sağol Matthew. – Junto

+0

Sevindim Yardımcı olabilirim! –

+0

OP'nin sorusu serileştirme değil, serileştirme ile ilgilidir. Serileştirme yöntemi bir XmlSerializerNamespaces parametresi almaz. –

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

Ek: Emin "ad" Make ad alanının tam tanım, sadece öneki.