How to extract data from xml with namespace?

Data ("1.0.0") from attribute "version" fall into property. But the property "Event" in the same class remains empty. If cut namespace from XML, it will work.

My XML:

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

My class:

[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; }
}

My Deserializer:

using (var reader = XmlReader.Create(new StringReader(xml)))
{
     reader.MoveToContent();
     var obj = (T)new XmlSerializer(typeof(T)).Deserialize(reader);
} 
Jon Skeet
people
quotationmark

Your event element is implicitly in the same namespace in the XML due to namespace defaulting, so you should specify that in your declaration:

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

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

people

See more on this question at Stackoverflow