2016-10-04 19 views
-1

私は以下のXML構造を外部サービスから取得しています。これにはCDATAが含まれており、順番にxmlがあります。私はCDATAのコンテンツをC#オブジェクトにdeserailizeしたい。誰も私にこれを手伝ってもらえますか?私は多くの記事が正しいものを見つけることができませんでした。C#でXML CDATAを読む

<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> 

答えて

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