Чтение XML CDATA в C#

#c# #xml #c#-4.0 #xml-parsing

#c# #xml #c #-4.0 #синтаксический анализ xml

Вопрос:

Ниже приведена структура 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>
  

Приведенный ниже XML внутри CDATA необходимо десериализовать.

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

Ответ №1:

 [XmlRoot("result")]
public class Result
{
    public string Item1 { get; set; }
    public string Item2 { get; set; }
    public string Item3 { get; set; }
}
  

Использование:

 Result resu<

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