Подсчитайте родительские узлы, которые имеют 2 типа дочерних узлов - в частности, по 1 «мальчику» и 1 «девочке» каждому - PullRequest
1 голос
/ 14 февраля 2012

У меня есть XML-файлы, содержащие такие данные ...

    <parent>
        <boy/>
    </parent>
    <parent>
        <girl/>
    <parent>
    <parent>
        <boy/>
        <girl/>
    </parent>

... и я хочу сосчитать родителей, у которых есть оба типа дочерних узлов IE: 1 мальчик и 1 девочка каждый. В приведенном выше примере ответ равен 1, поскольку только у одного родителя есть и мальчик, и девочка. Я использую xpath для запроса XML. У меня сейчас что-то вроде этого ...

 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(inXML);
 int ParentsWithBothKids = xmlDoc.SelectNodes("MY QUERY HERE!!!").Count;

Различные запросы, которые я пробую, либо выдают ошибку как недопустимый xpath, либо всегда возвращают 0, даже если у небольшого тестового XML-файла, который я использую, определенно есть.

Есть идеи, какой запрос xpath я могу использовать?

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Попробуйте parent[boy and girl] в качестве запроса xpath.

Проверьте Примеры XPath в MSDN.

1 голос
/ 14 февраля 2012
* +1000 * Используйте
count(//parent[boy and girl])

Когда вычисляется это выражение XPath, результатом является количество всех parent элементов в документе XML, так что каждый из них имеет дочерний элемент boy и girl.

Чтобы оценить такое выражение XPath (без выбора узлов), используйте XPathNavigator.Evaluate()

...