代码之家  ›  专栏  ›  技术社区  ›  MindSwipe

具有多个名称空间和名称空间前缀的C#XML反序列化

  •  0
  • MindSwipe  · 技术社区  · 7 年前

    我很确定这个问题已经被问到了,我就是找不到

    我正在尝试将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>
    

    我该如何建模 xmlns:siri 在C#?我的班级是这样的:

    [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; }
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   er-sho    7 年前

    试着改变你的想法 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; }
    }