C#讀取XML的CDATA節(jié)點內(nèi)容實例詳解
首先看實例代碼:
昨天讀取了以下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é)點的過程
我的目的是想要讀取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é)點集合, 循環(huán)節(jié)點集合,賦值,以下是實現(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);
}

以上就是本次介紹的全部知識點內(nèi)容,感謝大家的閱讀和對腳本之家的支持。
- C#實現(xiàn)XML文件讀取
- c#讀取XML多級子節(jié)點
- C# 創(chuàng)建,讀取,寫入XML文件
- C#讀取XML的三種實現(xiàn)方式
- 詳解c#讀取XML的實例代碼
- C#中如何使用 XmlReader 讀取XML文件
- C# winfrom實現(xiàn)讀取修改xml
- 詳解C#借助.NET框架中的XmlTextReader類讀取XML的方法
- C#保存與讀取DataTable信息到XML格式的方法
- C#讀取xml節(jié)點數(shù)據(jù)方法小結(jié)
- C#從文件流讀取xml文件到DataSet并顯示的方法
- C#讀取Excel并轉(zhuǎn)化成XML的方法
- c# 讀取XML文件的示例
相關文章
C#線程委托BeginInvoke與EndInvoke的用法
這篇文章介紹了C#線程委托BeginInvoke與EndInvoke的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
C#請求http向網(wǎng)頁發(fā)送接收數(shù)據(jù)的方法
這篇文章主要為大家詳細介紹了C#請求http向網(wǎng)頁發(fā)送數(shù)據(jù)、網(wǎng)頁接收的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
C#?實例解釋面向?qū)ο缶幊讨械膯我还δ茉瓌t(示例代碼)
本文我介紹了?SOLID?原則中的單一功能原則(single-responsibility?principle),并通過?C#?代碼示例簡明地詮釋了它的含意和實現(xiàn),對C#?面向?qū)ο缶幊淘瓌t感興趣的朋友跟隨小編一起看看吧2022-02-02
C#實現(xiàn)漢字轉(zhuǎn)拼音或轉(zhuǎn)拼音首字母的方法
這篇文章主要介紹了C#實現(xiàn)漢字轉(zhuǎn)拼音或轉(zhuǎn)拼音首字母的方法,涉及C#操作數(shù)組、遍歷及正則匹配的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-07-07
C#實現(xiàn)讀取匿名對象屬性值的方法示例總結(jié)
這篇文章主要介紹了C#實現(xiàn)讀取匿名對象屬性值的方法,結(jié)合實例形式總結(jié)分析了C#通過反射、轉(zhuǎn)換等方法讀取匿名對象屬性值的相關操作技巧,需要的朋友可以參考下2020-03-03

