【问题标题】:XML CDATA reading in C#在 C# 中读取 XML CDATA
【发布时间】:2017-02-12 08:10:40
【问题描述】:

我有以下来自外部服务的 XML 结构。它包含 CDATA,它又具有 xml。我想将 CDATA 内容脱轨到 C# 对象。有人可以帮我吗?我浏览了很多文章都找不到合适的。

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
  <Response xmlns=""><![CDATA[<result><Item1>Some data</Item1><Item2>Some data</Item2><Item3>Some data</Item3></result>]]></Response>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

下面的 CDATA 中的 XML 需要反序列化。

<result><Item1>Some data</Item1><Item2>Some data</Item2><Item3>Some data</Item3></result>

【问题讨论】:

    标签: c# xml c#-4.0 xml-parsing


    【解决方案1】:
    [XmlRoot("result")]
    public class Result
    {
        public string Item1 { get; set; }
        public string Item2 { get; set; }
        public string Item3 { get; set; }
    }
    

    用途:

    Result result;
    
    using (var xmlReader = XmlReader.Create(inputStream))
    {
        xmlReader.ReadToFollowing("Response");
        xmlReader.Read(); // read CDATA tag
    
        using (var stringReader = new StringReader(xmlReader.Value))
        {
            var xs = new XmlSerializer(typeof(Result));
            result = (Result)xs.Deserialize(stringReader);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-07-18
      • 1970-01-01
      • 2012-09-11
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2011-01-17
      • 1970-01-01
      相关资源
      最近更新 更多