使用不同的命名空间UWP反序列化XML

时间:2017-04-01 12:36:13

标签: c# xml win-universal-app deserialization

我有以下XML数据:

<?xml version="1.0"?>
  <e:propertyset xmlns:e="urn:schemas-upnp-org:event-1-0">
    <e:property>
      <LastChange>
        <Event xmlns="urn:schemas-upnp-org:metadata-1-0/RCS/">
          <InstanceID val="0">
            <RoomVolumes val="uuid:29e07ad9-224f-4160-a2bc-61d17845182a=100"/>
            <Volume channel="Master" val="100"/>
            <Mute channel="Master" val="0"/>
            <RoomMutes val="uuid:29e07ad9-224f-4160-a2bc-61d17845182a=0"/>
          </InstanceID>
        </Event>
      </LastChange>
    </e:property>
  </e:propertyset>

以下是我的课程:

[XmlRoot("propertyset", Namespace = "urn:schemas-upnp-org:event-1-0")]
public class EventPropertySet
{
    [XmlElement("property")]
    public List<EventProperty> Properties { get; set; }
}

public class EventProperty
{
    [XmlElement("LastChange")]
    public string LastChange { get; set; }

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

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

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

现在,当我尝试反序列化XML-Data&#39; LastChange&#39;总是&#39; null&#39;。 当我修改课程&#39; EventProperty&#39;像这样:

public class EventProperty
{
    [XmlElement("LastChange", Namespae = "")]
    public string LastChange { get; set; }

    [XmlElement("SinkProtocolInfo", Namespae = "")]
    public string SinkProtocolInfo { get; set; }

    [XmlElement("IndexerStatus", Namespae = "")]
    public string IndexerStatus { get; set; }

    [XmlElement("SystemUpdateID", Namespae = "")]
    public string SystemUpdateID { get; set; }
}

反序列化会引发异常: XmlException:无法在具有子元素的元素上调用ReadElementContentAs()方法。第1行,第103位。

我应该做些什么?

1 个答案:

答案 0 :(得分:0)

抱歉,我发现了这个问题。 “LastChange”背后的数据通常是解析的XML结构(如下所示:)

<LastChange>&lt;Event xmlns=&quot;urn:schemas-upnp-org:metadata-1-0/RCS/&quot;&gt;&lt;InstanceID val=&quot;0&quot;&gt;&lt;RoomVolumes val=&quot;uuid:29e07ad9-224f-4160-a2bc-61d17845182a=100&quot;/&gt;&lt;Volume channel=&quot;Master&quot; val=&quot;100&quot;/&gt;&lt;Mute channel=&quot;Master&quot; val=&quot;0&quot;/&gt;&lt;RoomMutes val=&quot;uuid:29e07ad9-224f-4160-a2bc-61d17845182a=0&quot;/&gt;&lt;/InstanceID&gt;&lt;/Event&gt;</LastChange>

现在,当我没有使用WebUtility.HtmlDecode进行“DeParse”时,每一件事都可以。