【问题标题】:C# XML Deserialization with multiple namespaces and namespace prefixes具有多个命名空间和命名空间前缀的 C# XML 反序列化
【发布时间】:2018-10-09 07:03:37
【问题描述】:

我很确定有人问过这个问题并回答了我只是找不到它

我正在尝试将 XML 反序列化为 POCO。
这是我正在努力的部分

<Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri"

这是我的整个 XML:

<?xml version="1.0" encoding="UTF-8"?>
<Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ServiceRequest>
<siri:RequestTimestamp>2012-10-28T20:56:00Z</siri:RequestTimestamp>
<siri:RequestorRef>SEUS</siri:RequestorRef>
<RequestPayload>
<TripRequest>
<Origin>
<LocationRef>
<StopPointRef>8500320</StopPointRef>
</LocationRef>
<DepArrTime>2018-10-09T08:05:51</DepArrTime>
</Origin>
<Destination>
<LocationRef>
<StopPointRef>8500322</StopPointRef>
</LocationRef>
<DepArrTime>2018-10-09T08:05:51</DepArrTime>
</Destination>
<Params>
<NumberOfResults>1</NumberOfResults>
<IncludeTrackSections>true</IncludeTrackSections>
<IncludeLegProjection>true</IncludeLegProjection>
<IncludeIntermediateStops>true</IncludeIntermediateStops>
</Params>
</TripRequest>
</RequestPayload>
</ServiceRequest>
</Trias>

如何在 C# 中为 xmlns:siri 建模?我的班级看起来像这样:

[XmlRoot(nameof(Trias), Namespace = "http://www.vdv.de/trias")]
public class Trias
{

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

    [XmlAttribute("xmlns")]
    public string Xmlns { get; set; }

    [XmlAttribute("siri")]
    public string Siri { get; set; }
}

【问题讨论】:

  • 请添加您的相关 xml bcoz 发布的 xml 不足以解决您的问题
  • 试试这个 => [XmlAttribute(Namespace="http://www.siri.org.uk/siri")] public string Siri { get; set; }
  • 谢谢,序列化现在可以工作了,但是反序列化仍然不行。但我现在才意识到我不需要反序列化这些信息
  • 所以我可以添加这个作为你的问题的答案吗?然后你在答案旁边打勾并投票:)
  • 遗憾的是,您不能将 cmets 标记为答案,但我确实赞成 ;)

标签: c# xml serialization


【解决方案1】:

尝试将您的XmlAttribute 属性Siri[XmlAttribute("siri")] 更改为[XmlAttribute(Namespace = "http://www.siri.org.uk/siri")]

[XmlRoot(nameof(Trias), Namespace = "http://www.vdv.de/trias")]
public class Trias
{

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

    [XmlAttribute("xmlns")]
    public string Xmlns { get; set; }

    [XmlAttribute(Namespace = "http://www.siri.org.uk/siri")]
    public string Siri { get; set; }
}

【讨论】:

    猜你喜欢
    • 2011-01-21
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多