2012-07-10 4 views
1

XML 문서에서 검색 기준에 따라 하나 이상의 레코드를 검색하는 가장 좋은 방법은 무엇입니까? 제안을 환영합니다.XML 문서에서 검색

답변

6

를 살펴 보자. 귀하의 질문은 순간에 매우 모호하지만, 예를 들어, 당신은 쓸 수 :

XDocument doc = XDocument.Load("test.xml"); 
var matches = doc.Descendants("Person") 
       .Where(x => (string) x.Attribute("Name") == "Jon") 
       .Where(x => x.Elements("Child").Count() >= 2); 

당신이 사용 XPath에, 나는 일반적으로하지에 선호 할 수 있지만 - 또 다른 내에서 하나 개의 언어를 내장의 모든 정상 문제가있다 LINQ to XML을 사용하는 동안 C#을 사용하기 때문에 LINQ to XML 라이브러리의 관련 메서드 만 배울 수 있습니다.

LINQ to XML을 사용하면 네임 스페이스 처리가 단순 해지며 쿼리가 모두 문자열이 아닌 코드에 포함되므로 값 등을 이스케이프 처리 할 필요가 없습니다.

2

.net xml 문서는 xpath를 잘 지원합니다.

대부분의 XML 검색에서 작동합니다.

개인적으로 나는 당신이 가능하게 할 수있는 경우에 XML로 LINQ를 사용하십시오 XPath Examples

1

사용 XPath이 같은 XmlDocument.SelectNodes 또는 SelectSingleNode의 :

XmlDocument doc = new XmlDocument(); 
doc.Load("bookstore.xml"); 
XmlNode root = doc.DocumentElement; 

// Add the namespace. 
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("bk", "urn:newbooks-schema"); 

// Select and display the first node in which the author's 
// last name is Kingsolver. 
XmlNode node = root.SelectSingleNode(
"descendant::bk:book[bk:author/bk:last-name='Kingsolver']", nsmgr); 
Console.WriteLine(node.InnerXml); 
관련 문제