首先看实例代码:
昨天读取了以下XML,之前没有读取过类似的格式,用一种比较笨的方法读取的,记录下 & lt; & # 63; xml version=" 1.0 " & # 63;比; & lt; response> & lt; srvver> 1.0 & lt;/srvver> & lt; srvcode> 000 & lt;/srvcode> & lt; payload> & lt;参数类型=癤ML”键=笆荨北? & lt; ! [CDATA [ & lt; Response> & lt; Execution> & lt;状态代码=" 0 " sql_code=" 0 "描述=爸葱谐晒?”/比; & lt;/Execution> & lt; ResponseContent> & lt;参数/比; & lt; Document> & lt;记录集id=?”比; & lt;主名称=癕”node_id=?”比; & lt; Record> & lt;字段名=" MTRL_ID " value=" https://www.yisu.com/zixun/51722500H031 "/比; & lt;字段名=" IS_MAIN " value=" https://www.yisu.com/zixun/Y "/比; & lt;字段名=" MAIN_ID " value=" https://www.yisu.com/zixun/51722500H031 "/比; & lt;字段名称==" https://www.yisu.com/zixun/1.0 "/凹亮俊奔壑当? & lt;字段名=" NN_QTY " value=" https://www.yisu.com/zixun/1000.0 "/比; & lt;字段名=" TN_QTY " value=" https://www.yisu.com/zixun/1000.0 "/比; & lt;字段名=" SEQ " value=" https://www.yisu.com/zixun/70.0 "/比; & lt;字段名=" POINT_STR " value="/比; & lt;/Record> & lt;/Master> & lt;/RecordSet> & lt;记录集id=?”比; & lt;主名称=癕”node_id=?”比; & lt; Record> & lt;字段名=" MTRL_ID " value=" https://www.yisu.com/zixun/51820590H001 "/比; & lt;字段名=" IS_MAIN " value=" https://www.yisu.com/zixun/N "/比; & lt;字段名=" MAIN_ID " value=" https://www.yisu.com/zixun/51820590H001 "/比; & lt;字段名称==" https://www.yisu.com/zixun/1.0 "/凹亮俊奔壑当? & lt;字段名=" NN_QTY " value=" https://www.yisu.com/zixun/1000.0 "/比; & lt;字段名=" TN_QTY " value=" https://www.yisu.com/zixun/500.0 "/比; & lt;字段名=" SEQ " value=" https://www.yisu.com/zixun/30.0 "/比; & lt;字段名=" POINT_STR " value="/比; & lt;/Record> & lt;/Master> & lt;/RecordSet> & lt;记录集id=?”比; & lt;主名称=癕”node_id=?”比; & lt; Record> & lt;字段名=" MTRL_ID " value=" https://www.yisu.com/zixun/51820710H002 "/比; & lt;字段名=" IS_MAIN " value=" https://www.yisu.com/zixun/N "/比; & lt;字段名=" MAIN_ID " value=" https://www.yisu.com/zixun/51820510H002 "/比; & lt;字段名称==" https://www.yisu.com/zixun/0.0 "/凹亮俊奔壑当? & lt;字段名=" NN_QTY " value=" https://www.yisu.com/zixun/0.0 "/比; & lt;字段名=" TN_QTY " value=" https://www.yisu.com/zixun/1000.0 "/比; & lt;字段名=" SEQ " value=" https://www.yisu.com/zixun/20.0 "/比; & lt;字段名=" POINT_STR " value="/比; & lt;/Record> & lt;/Master> & lt;/RecordSet> & lt;/Document> & lt;/ResponseContent> & lt;/Response> ]]比; & lt;/param> & lt;/payload> & lt;/response>
以下是读xml节取点的过程
我的目的是想要读取CDATA里面的& lt; RecordSet> & lt;/RecordSet>包裹的数据
1。我先建立了一个类
公开课ReadXml { 公共字符串记录集; 公共字符串MTRL_ID; 公共字符串IS_MAIN; 公共字符串MAIN_ID; 公共字符串剂量; 公共字符串NN_QTY; 公共字符串TN_QTY; 公共字符串SEQ; 公共字符串POINT_STR; }
2。接着我把CDATA里面的内容提出来
XmlDocument doc=new XmlDocument (); doc.LoadXml (strFile);var cdata=https://www.yisu.com/zixun/(XmlCDataSection) doc.SelectSingleNode(“/响应/负载/参数/text ()”);
3。然后用XElement的Linq方法找到记录集节点集合,循环节点集合,赋值,以下是实现代码:
XElement xe=XElement.Parse (cdata.InnerText); IEnumerable元素=从xe.Elements避署(“ResponseContent”) . elements(“文档”). elements(记录集)选择避署; List xmlNodeList=new List (); foreach (var避署的元素) { ReadXml xmlNode=new ReadXml (); 模型。记录集=ele.Attribute value (" id "); var subeles=ele.Elements(“大师”). elements(“记录”). elements(“场”); foreach (var subeles项) { 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=癕TRL_ID”) { xmlNode。.NextAttribute.Value MTRL_ID=item.Attribute (" name "); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=癐S_MAIN”) { xmlNode。.NextAttribute.Value IS_MAIN=item.Attribute (" name "); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=癕AIN_ID”) { xmlNode。.NextAttribute.Value MAIN_ID=item.Attribute (" name "); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=凹亮俊? { xmlNode。剂量=item.Attribute .NextAttribute.Value(“名字”); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=癗N_QTY”) { xmlNode。.NextAttribute.Value NN_QTY=item.Attribute (" name "); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=癟N_QTY”) { xmlNode。.NextAttribute.Value TN_QTY=item.Attribute (" name "); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=SEQ) { xmlNode。SEQ=item.Attribute .NextAttribute.Value(“名字”); } 如果(item.Attribute(“名字”)。值=https://www.yisu.com/zixun/=癙OINT_STR”) { .NextAttribute.Value xmlNode.POINT_STR=item.Attribute (" name "); } } xmlNodeList.Add (xmlNode); } c#读取XML的CDATA节点内容实例详解