XPath 1.0: список различных значений с количеством их вхождений
424 просмотра
1 ответ
Я создаю отчет, который извлекает информацию из файла XML.
<?xml version="1.0" encoding="UTF-8"?>
<JoinedRoot>
<FlexoPlateReport>
<Device>A</Device>
</FlexoPlateReport>
<FlexoPlateReport>
<Device>B</Device>
</FlexoPlateReport>
<FlexoPlateReport>
<Device>A</Device>
</FlexoPlateReport>
<FlexoPlateReport>
<Device>C</Device>
</FlexoPlateReport>
<FlexoPlateReport>
<Device>C</Device>
</FlexoPlateReport>
<FlexoPlateReport>
<Device>B</Device>
</FlexoPlateReport>
<FlexoPlateReport>
<Device>A</Device>
</FlexoPlateReport>
</JoinedRoot>
По сути, до сих пор я собрал выражение XPath, в котором будут перечислены различные устройства. В приведенном выше XML есть три устройства (A, B и C). Ниже приведено выражение XPath.
/JoinedRoot/FlexoPlateReport[not( Device/text()=preceding-sibling::FlexoPlateReport/Device/text())]/Device/text()
Я ограничен XPath 1.0, в противном случае я бы использовал функцию Different-values (). Следующее, что я хотел бы сделать, это вернуть счетчик для каждого из устройств, перечисленных в первом выражении XPath. Например, приведенный выше XML даст мне следующие значения:
A: 3
B: 2
C: 2
Можно ли вернуть оба имени и считать в одном выражении? Если нет, то есть ли выражение XPath, которое будет возвращать только количество для каждого отдельного устройства. Я никогда не узнаю, сколько разных устройств в отчете или какие значения для элемента Device. Поэтому я не могу просто написать функции count () для определенного имени устройства.
Заранее спасибо!
Автор: Matt Furr Источник Размещён: 30.09.2019 04:01Ответы (1)
1 плюс
Если вы ограничены XPath 1.0, это невозможно с одним запросом. Вам понадобится двухпроходный процесс. Если вы программно делаете эти запросы, используйте соответствующий язык программирования (XSLT, PHP, JavaScript), чтобы инициировать подсчет запросов на основе результатов первого запроса.
count(/JoinedRoot/FlexoPlateReport/Device[.='A'])
Автор: Thomas W
Размещён: 22.07.2017 05:42
Вопросы из категории :
- xml Обработка XML в Python
- xml Каков наилучший способ проверки XML-файла по сравнению с XSD-файлом?
- xml Removing nodes from an XmlDocument
- xml Как анализировать XML-файлы?
- xpath Какой правильный XPath для выбора атрибутов, которые содержат «foo»?
- xpath Создать XML-узлы на основе XPath?
- xpath XPath выберите узел с пространством имен
- xpath Использование Xpath с пространством имен по умолчанию в C #
- count Как эффективно подсчитать количество ключей / свойств объекта в JavaScript?
- count MySQL - использование COUNT (*) в предложении WHERE
- count Как отсортировать список объектов на основе атрибута объектов?
- count Select count(*) from multiple tables
- distinct-values Как создать HashSet <List <Int >> с различными элементами?
- distinct-values Counting unique / distinct values by group in a data frame
- distinct-values How to maintain a Unique List in Java?
- distinct-values Группа в группе XSLT 1.0 с суммой и количеством различных значений
- xpath-1.0 Проверьте тип узла в шаблоне XSL
- xpath-1.0 Как использовать начальный-с (), содержит () и заканчивается-в () в XPath, чтобы найти внутренний текст XML-узла? в XPATH 1.0
- xpath-1.0 XPath 1.0: используйте значение атрибута родителя текущего узла, чтобы найти другой соответствующий узел
- xpath-1.0 Могу ли я рефакторинг, чтобы избежать "self ::" и "parent ::"?