다음과 같이 XmlReader
및 xml 탐색기를 사용하고 있습니다.C#을 사용하여 XML 문서의 속성 계산 방법 계산
XmlDocument doc = new XmlDocument();
doc.Load(txtFileName.Text.Trim());
// Create the navigator.
XPathNavigator xnav = doc.CreateNavigator();
탐색을 만들었 으면 자손을 선택할 수 있으며 자식 수를 결정할 수 있습니다. 그러나, 나는 문제가 있는데 그 노드의 속성 수를 알아야 할 때가 있습니다. 예를 들어, 다음 코드를 사용하는 하위 노드의 수를 알고 싶을 수는 없습니다.
int size = xnav.SelectDescendants(XPathNodeType.All, true).Count;
이 함수는이 경우에 두 개의 매개 변수를 받아들입니다. 텍스트 설명이나 요소와 같이 선택하려는 노드 유형과 현재 하위 트리의 루트를 원하면 두 번째 매개 변수가 true로 설정됩니다 하위 노드의 일부뿐만 아니라 선택 될 노드.
select[*]
의 결과는 XPathIterator 객체입니다.
물론 주석이나 공백의 수를 원하지 않으므로 all 속성을 사용하여 모든 노드를 검색하지 않고 원하는 노드의 유형을 지정해야 모든 것을 말할 수 있습니다 요소, 속성 및 텍스트 따라서 우리는 다음 명령을 실행해야합니다 :
int size = xnav.SelectDescendants(XPathNodeType.Attribute | XPathNodeType.Element | XPathNodeType.Text , true).Count;
당신은 속성의 가치를 필요로한다고 생각합니다. 그래서 다음과 같은 노드의 유형을 지정하기 위해 노력하고 있습니다 :
int size = (xnav.SelectDescendants(XPathNodeType.Attribute, true).Count * 2) +
xnav.SelectDescendants(XPathNodeType.Element, true).Count +
xnav.SelectDescendants(XPathNodeType.Text , true).Count;
현재 나는 그 모든 카운트를 제외하고 위의 모든 수를 가지고 있습니다.
HEEELLLPPP !!! 제발
p.s. 나는 요소에 루프를 통과하기를 원하지 않는다. 그렇게하는 것은 매우 비용이 많이 든다.
당신이 예를 들어 XML 문서를 줄 수 있습니다 (이유)를 수신 할 것으로 예상되는 수와 현재 받고있는 횟수가 얼마나 많은 속성을 찾아 XPath를 사용할 수 있을까? 귀하의 질문은 현재 약간 혼란 스럽습니다. – steamer25