C#讀取XML的CDATA節(jié)點(diǎn)內(nèi)容實(shí)例詳解
首先看實(shí)例代碼:
昨天讀取了以下XML, 之前沒(méi)有讀取過(guò)類(lèi)似的格式,用一種比較笨的方法讀取的,記錄下 <?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)的過(guò)程
我的目的是想要讀取CDATA里面的 <RecordSet></RecordSet> 包裹的數(shù)據(jù)
1.我先建立了一個(gè)類(lèi)
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)容提出來(lá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); }
以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家的閱讀和對(duì)我們的支持。
欄 目:C#教程
本文標(biāo)題:C#讀取XML的CDATA節(jié)點(diǎn)內(nèi)容實(shí)例詳解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4670.html
您可能感興趣的文章
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并打開(kāi)的方法
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#停止線(xiàn)程的方法
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新聞效果的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已安裝軟件變化的方法
- 01-10C#實(shí)現(xiàn)多線(xiàn)程下載文件的方法


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10C#通過(guò)反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁(yè)無(wú)法打開(kāi)的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻播放器左下角滾動(dòng)新
- 01-10C#停止線(xiàn)程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過(guò)重寫(xiě)Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10delphi制作wav文件的方法