C\#XML 을 읽 는 CDATA 노드 내용 실례 상세 설명
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=" !"/>
</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 노드 를 읽 는 과정 입 니 다.CDATA 에 있 는
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 의 내용 을 제시 하 겠 습 니 다.
XmlDocument doc = new XmlDocument();
doc.LoadXml(strFile); var cdata = (XmlCDataSection)doc.SelectSingleNode("/response/payload/param/text()");
3.그 다음 에 XElement 의 Linq 방법 으로 RecordSet 노드 집합,순환 노드 집합,할당,다음은 실현 코드 를 찾 습 니 다.
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);
}
이상 은 이번 소개 의 모든 지식 포인트 내용 입 니 다.여러분 의 읽 기와 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.