반응형
문자열에서 XML을 읽고 몇 가지 필드 가져오기 - XML을 읽는 문제
이 XML이 있습니다(C# 문자열에 저장됨).myXML
)
<?xml version="1.0" encoding="utf-16"?>
<myDataz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<listS>
<sog>
<field1>123</field1>
<field2>a</field2>
<field3>b</field3>
</sog>
<sog>
<field1>456</field1>
<field2>c</field2>
<field3>d</field3>
</sog>
</listS>
</myDataz>
그리고 나는 모든 것을 탐색하고 싶습니다.<sog>
요소들.각각의 아이에 대해서는 아이를 인쇄하고 싶습니다.<field1>
.
내 암호는 이렇습니다
XmlDocument xmlDoc = new XmlDocument();
string myXML = "<?xml version=\"1.0\" encoding=\"utf-16\"?><myDataz xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><listS><sog><field1>123</field1><field2>a</field2><field3>b</field3></sog><sog><field1>456</field1><field2>c</field2><field3>d</field3></sog></listS></myDataz>"
xmlDoc.Load(myXML);
XmlNodeList parentNode = xmlDoc.GetElementsByTagName("listS");
foreach (XmlNode childrenNode in parentNode)
{
HttpContext.Current.Response.Write(childrenNode.SelectSingleNode("//field1").Value);
}
XML로 된 문자열을 읽을 수 없는 것 같습니까?System.ArgumentException
Load:가 아니라 LoadXml 메서드를 사용해야 합니다.
xmlDoc.LoadXml(myXML);
Load 메서드는 파일에서 xml을 로드하고 문자열에서 LoadXml을 로드하려고 합니다.XPath를 사용할 수도 있습니다.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
string xpath = "myDataz/listS/sog";
var nodes = xmlDoc.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
HttpContext.Current.Response.Write(childrenNode.SelectSingleNode("//field1").Value);
}
Linq-XML 사용,
XDocument doc = XDocument.Load(file);
var result = from ele in doc.Descendants("sog")
select new
{
field1 = (string)ele.Element("field1")
};
foreach (var t in result)
{
HttpContext.Current.Response.Write(t.field1);
}
OR : 다음의 노드 목록을 가져옵니다.<sog>
꼬리표를 매다
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(myXML);
XmlNodeList parentNode = xmlDoc.GetElementsByTagName("sog");
foreach (XmlNode childrenNode in parentNode)
{
HttpContext.Current.Response.Write(childrenNode.SelectSingleNode("field1").InnerText);
}
다른 답변은 몇 년이 지났고(Windows Phone 8.1에서는 작동하지 않음), 다른 옵션을 선택해야겠다고 생각했습니다.Windows Phone 앱의 RSS 응답을 구문 분석하는 데 사용했습니다.
XDocument xdoc = new XDocument();
xdoc = XDocument.Parse(xml_string);
또는 XmlSerializer 클래스를 사용합니다.
XmlSerializer xs = new XmlSerializer(objectType);
obj = xs.Deserialize(new StringReader(yourXmlString));
시스템을 사용했습니다.Xml.Linq.XElement를 목적으로 합니다.(루트 노드가 아닌) xml의 첫 번째 자식 노드의 값을 읽으려면 아래 코드를 확인하십시오.
string textXml = "<xmlroot><firstchild>value of first child</firstchild>........</xmlroot>";
XElement xmlroot = XElement.Parse(textXml);
string firstNodeContent = ((System.Xml.Linq.XElement)(xmlroot.FirstNode)).Value;
언급URL : https://stackoverflow.com/questions/8401280/read-a-xml-from-a-string-and-get-some-fields-problems-reading-xml
반응형
'source' 카테고리의 다른 글
2바이트를 부호 있는 16비트 정수로 변환하는 올바른 방법은 무엇입니까? (0) | 2023.10.14 |
---|---|
jQuery로 DOM 요소를 파괴하는 방법? (0) | 2023.10.14 |
python 스크립트가 실행 중인지 확인합니다. (0) | 2023.10.14 |
두 번째 인수가 메인()인 char *argv[]와 char **argv의 차이 (0) | 2023.10.14 |
gcc는 수학을 제대로 포함하지 않습니다.h (0) | 2023.10.14 |