2014-02-21 36 views
1

來自屬性「版本」的數據(「1.0.0」)屬於屬性。但同一班級的「活動」屬性仍爲空。 如果從XML中刪除命名空間,它將起作用。如何從名稱空間中提取XML數據?

我的XML:

<rootnode> 
    <ns:eventresponse xmlns:ns="somenamespace" version="1.0.0"> 
    <event id="694717028"> 
     <somedata>val</somedata> 
    </event> 
    </ns:eventresponse> 
</rootnode> 

我的類:

[XmlRoot("rootnode")] 
public class RootNode 
{ 
    [XmlElement(ElementName = "eventresponse", Namespace = "somenamespace")] 
    public EventResponseData EventResponse { get; set; } 
} 

    public class EventResponseData 
    { 
     [XmlElement("event")] 
     public EventData Event { get; set; } 

     [XmlAttribute("version")] 
     public string Version { get; set; } 
    } 

public class TvEventData 
{ 
    [XmlAttribute("id")] 
    public string EventID { get; set; } 

    [XmlElement("somedata")] 
    public string SomeData { get; set; } 
} 

我解串器:

using (var reader = XmlReader.Create(new StringReader(xml))) 
{ 
    reader.MoveToContent(); 
    var obj = (T)new XmlSerializer(typeof(T)).Deserialize(reader); 
} 
+0

請不要在標題中包含languge標籤,除非在沒有它的情況下沒有意義。標籤用於此目的。 –

回答

4

event元素是隱含在XML相同的命名空間,由於命名空間違約,所以你應該在你的聲明中指定:

public class EventResponseData 
{ 
    [XmlElement(ElementName = "event", Namespace = "somenamespace")] 
    public EventData Event { get; set; } 

    [XmlAttribute("version")] 
    public string Version { get; set; } 
}