C#讀取XML的CDATA節(jié)點(diǎn)內(nèi)容實(shí)例詳解
更新時間:2019年09月03日 15:52:20 作者:需要充電
在本篇文章里小編給大家整理了關(guān)于C# 讀取XML的CDATA節(jié)點(diǎn)內(nèi)容的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
首先看實(shí)例代碼:
昨天讀取了以下XML, 之前沒有讀取過類似的格式,用一種比較笨的方法讀取的,記錄下 <?xml version="1.0"?> <response> <srvver>1.0</srvver> <srvcode>000</srvcode> <payload> <param type="XML" key="data"> <![CDATA[ <Response> <Execution> <Status code="0" sql_code="0" description="執(zhí)行成功!"/> </Execution> <ResponseContent> <Parameter/> <Document> <RecordSet id="1"> <Master name="M" node_id="1"> <Record> <Field name="MTRL_ID" value="51722500H031"/> <Field name="IS_MAIN" value="Y"/> <Field name="MAIN_ID" value="51722500H031"/> <Field name="DOSAGE" value="1.0"/> <Field name="NN_QTY" value="1000.0"/> <Field name="TN_QTY" value="1000.0"/> <Field name="SEQ" value="70.0"/> <Field name="POINT_STR" value=""/> </Record> </Master> </RecordSet> <RecordSet id="2"> <Master name="M" node_id="2"> <Record> <Field name="MTRL_ID" value="51820590H001"/> <Field name="IS_MAIN" value="N"/> <Field name="MAIN_ID" value="51820590H001"/> <Field name="DOSAGE" value="1.0"/> <Field name="NN_QTY" value="1000.0"/> <Field name="TN_QTY" value="500.0"/> <Field name="SEQ" value="30.0"/> <Field name="POINT_STR" value=""/> </Record> </Master> </RecordSet> <RecordSet id="3"> <Master name="M" node_id="3"> <Record> <Field name="MTRL_ID" value="51820710H002"/> <Field name="IS_MAIN" value="N"/> <Field name="MAIN_ID" value="51820510H002"/> <Field name="DOSAGE" value="0.0"/> <Field name="NN_QTY" value="0.0"/> <Field name="TN_QTY" value="1000.0"/> <Field name="SEQ" value="20.0"/> <Field name="POINT_STR" value=""/> </Record> </Master> </RecordSet> </Document> </ResponseContent> </Response> ]]> </param> </payload> </response>
以下是讀取xml節(jié)點(diǎn)的過程
我的目的是想要讀取CDATA里面的 <RecordSet></RecordSet> 包裹的數(shù)據(jù)
1.我先建立了一個類
public class ReadXml { public string RecordSet; public string MTRL_ID; public string IS_MAIN; public string MAIN_ID; public string DOSAGE; public string NN_QTY; public string TN_QTY; public string SEQ; public string POINT_STR; }
2. 接著我把CDATA里面的內(nèi)容提出來
XmlDocument doc = new XmlDocument(); doc.LoadXml(strFile); var cdata = (XmlCDataSection)doc.SelectSingleNode("/response/payload/param/text()");
3. 然后用XElement的Linq方法找到 RecordSet 節(jié)點(diǎn)集合, 循環(huán)節(jié)點(diǎn)集合,賦值,以下是實(shí)現(xiàn)代碼:
XElement xe = XElement.Parse(cdata.InnerText); IEnumerable<XElement> elements = from ele in xe.Elements("ResponseContent").Elements("Document").Elements("RecordSet") select ele; List<ReadXml> xmlNodeList = new List<ReadXml>(); foreach (var ele in elements) { ReadXml xmlNode= new ReadXml(); model.RecordSet = ele.Attribute("id").Value; var subeles = ele.Elements("Master").Elements("Record").Elements("Field"); foreach (var item in subeles) { if (item.Attribute("name").Value == "MTRL_ID") { xmlNode.MTRL_ID = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "IS_MAIN") { xmlNode.IS_MAIN = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "MAIN_ID") { xmlNode.MAIN_ID = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "DOSAGE") { xmlNode.DOSAGE = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "NN_QTY") { xmlNode.NN_QTY = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "TN_QTY") { xmlNode.TN_QTY = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "SEQ") { xmlNode.SEQ = item.Attribute("name").NextAttribute.Value; } if (item.Attribute("name").Value == "POINT_STR") { xmlNode.POINT_STR=item.Attribute("name").NextAttribute.Value; } } xmlNodeList.Add(xmlNode); }
以上就是本次介紹的全部知識點(diǎn)內(nèi)容,感謝大家的閱讀和對腳本之家的支持。
您可能感興趣的文章:
- C#實(shí)現(xiàn)XML文件讀取
- c#讀取XML多級子節(jié)點(diǎn)
- C# 創(chuàng)建,讀取,寫入XML文件
- C#讀取XML的三種實(shí)現(xiàn)方式
- 詳解c#讀取XML的實(shí)例代碼
- C#中如何使用 XmlReader 讀取XML文件
- C# winfrom實(shí)現(xiàn)讀取修改xml
- 詳解C#借助.NET框架中的XmlTextReader類讀取XML的方法
- C#保存與讀取DataTable信息到XML格式的方法
- C#讀取xml節(jié)點(diǎn)數(shù)據(jù)方法小結(jié)
- C#從文件流讀取xml文件到DataSet并顯示的方法
- C#讀取Excel并轉(zhuǎn)化成XML的方法
- c# 讀取XML文件的示例
相關(guān)文章
簡單聊聊C#字符串構(gòu)建利器StringBuilder
因?yàn)镾tring類型代表不可變字符串,所以無法對當(dāng)前String類型實(shí)例進(jìn)行處理.所以FCL提供了System.Text.StringBuilder類型,下面這篇文章主要給大家介紹了關(guān)于C#字符串構(gòu)建利器StringBuilder的相關(guān)資料,需要的朋友可以參考下2022-03-03C# OpenCvSharp實(shí)現(xiàn)去除字母后面的雜線
這篇文章主要為大家詳細(xì)介紹了C#如何使用OpenCvSharp實(shí)現(xiàn)去除字母后面的雜線效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11