簡體   English   中英

C# 中的 XML CDATA 讀取

[英]XML CDATA reading in C#

我有以下來自外部服務的 XML 結構。 它包含 CDATA,而它又包含 xml。 我想將 CDATA 內容 deserailize 到 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>
[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);
    }
}

轉換XML <!--CDATA to DataTable C#</div--><div id="text_translate"><p> 我有 Webservice SOAP 方法,它將 Json 作為輸入參數。</p><pre> //For sample string jsonString = "[{"Year":"2020","UserId":"1","Comp":"20","DeptId":"32","CategoryId":"53","ItemId":"0"}]"; string[] processString = budget.BudgetTagNet(jsonString);</pre><p> 現在“budget.BudgetTagNet(jsonString)”返回前面提到的字符串數組,並且 SOAP 響應顯示以下值: <a href="https://i.stack.imgur.com/ms2hp.png" rel="nofollow noreferrer">SOAP 響應結果</a></p><p>現在我想將返回的預算數組轉換為 DataTable 以進一步用於我的項目,但我做不到。 實現這一目標的最佳方法是什么。 我嘗試過的方法如下所述。</p><pre> string jsonString = CommonEnum.DataTableToJSON(Table); err.Message = "Json String is: " + jsonString; err.Insert(); string[] processString = budget.BudgetTagNet(jsonString); err.Message = "Budget service data is: " + processString[1]; err.Insert(); var XMLAsString = CommonEnum.SerializeXML(processString[1]); err.Message = "Converted XML To String data is: " + JsonConvert.SerializeObject(XMLAsString); err.Insert(); dt = (DataTable) JsonConvert.DeserializeObject(XMLAsString, (typeof(DataTable))); err.Message = "DataTable data: " + JsonConvert.SerializeObject(dt); err.Insert();</pre><p> 最后插入數據庫中的數據,如上述方法是:<a href="https://i.stack.imgur.com/zSY2Q.png" rel="nofollow noreferrer">插入的數據庫值</a></p></div>

[英]Convert XML <!CDATA to DataTable C#

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 使用C#的XML中的CDATA 使用Linq-to-XML和C#閱讀RSS feed-如何解碼CDATA部分? C#:xml CData中的字節數組 轉換XML <!--CDATA to DataTable C#</div--><div id="text_translate"><p> 我有 Webservice SOAP 方法,它將 Json 作為輸入參數。</p><pre> //For sample string jsonString = "[{"Year":"2020","UserId":"1","Comp":"20","DeptId":"32","CategoryId":"53","ItemId":"0"}]"; string[] processString = budget.BudgetTagNet(jsonString);</pre><p> 現在“budget.BudgetTagNet(jsonString)”返回前面提到的字符串數組,並且 SOAP 響應顯示以下值: <a href="https://i.stack.imgur.com/ms2hp.png" rel="nofollow noreferrer">SOAP 響應結果</a></p><p>現在我想將返回的預算數組轉換為 DataTable 以進一步用於我的項目,但我做不到。 實現這一目標的最佳方法是什么。 我嘗試過的方法如下所述。</p><pre> string jsonString = CommonEnum.DataTableToJSON(Table); err.Message = "Json String is: " + jsonString; err.Insert(); string[] processString = budget.BudgetTagNet(jsonString); err.Message = "Budget service data is: " + processString[1]; err.Insert(); var XMLAsString = CommonEnum.SerializeXML(processString[1]); err.Message = "Converted XML To String data is: " + JsonConvert.SerializeObject(XMLAsString); err.Insert(); dt = (DataTable) JsonConvert.DeserializeObject(XMLAsString, (typeof(DataTable))); err.Message = "DataTable data: " + JsonConvert.SerializeObject(dt); err.Insert();</pre><p> 最后插入數據庫中的數據,如上述方法是:<a href="https://i.stack.imgur.com/zSY2Q.png" rel="nofollow noreferrer">插入的數據庫值</a></p></div> XML解析:讀取CDATA 用C#閱讀XML 用C#讀取XML 在C#中讀取XML 如何在 C# 中編寫包含內部節點的 XML 的 CData? 在Windows 8 Phone應用程序中的C#中解析XML CDATA
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM