는 사용 XmlReader
:
using (StringReader sr = new StringReader(myString))
using (XmlReader xr = XmlReader.Create(sr))
{
while (xr.Read())
{
if (xr.NodeType == XmlNodeType.Element && xr.Name == "foo")
{
Console.WriteLine(xr.ReadString());
}
}
}
XML 문서에서 "foo에"라는 이름의 모든 요소의 텍스트 내용 밖으로 위의 인쇄합니다. 당신이 그것을 검색 할 수 있습니다 전에 전체 문서를 구문 분석됩니다 때문에, XPathDocument
를 사용
가 느립니다 (.. 음, 종류의 ReadString
은 매우 우아하게 중첩 된 요소를 처리하지 않습니다)하지만 단순의 장점이있다 :
를
using (StringReader sr = new StringReader(myString))
{
XPathDocument d = new XPathDocument(sr);
foreach (XPathNavigator n in d.CreateNavigator().Select("//foo/text()"))
{
Console.WriteLine(n.Value);
}
}
당신은 성능이나 메모리 사용에 관심을하지 않는 경우, 그것이 XmlDocument
사용하는 간단한입니다 : 좋은 생각처럼
XmlDocument d = new XmlDocument();
d.LoadXml(myString);
foreach (XmlNode n in d.SelectNodes("//foo/text()"))
{
Console.WriteLine(n.Value);
}
코드 샘플에 대한 좋은 답변입니다. 부수적으로,'XPathNodeIterator'는'IEnumerable'을 구현하므로'while'을 사용할 필요가 없습니다 - foreach가 트릭을 수행하고 읽기 쉽습니다. –
맞습니다. 나는이를 보여주기 위해 예를 편집했다. –