Скажем, у меня есть структура узла, такая как:
<Row>
<Column Name="Primary Number">1</Column>
<Column Name="Secondary Number">01</Column>
<Column Name="Text">This is all one sentence</Column>
<Row>
<Column Name="Primary Number">1</Column>
<Column Name="Secondary Number">02</Column>
<Column Name="Text">I would like to return</Column>
<Row>
<Column Name="Primary Number">1</Column>
<Column Name="Secondary Number">03</Column>
<Column Name="Text">as one string, in one xpath line</Column>
Прежде всего, я хотел бы сказать, что это не мой xml, и я не помогал в его построении. Но я вынужден использовать его для получения необходимой информации ... Так что, пожалуйста, помогите.
Итак, что я хотел бы сделать, используя один XPath, так это вернуть одну строку, содержащую текст из всех n числовых полей Text всех первичных номеров = 1 узла.
Возможно ли это с помощью XPath 1.0?
У меня есть не очень элегантное решение, но оно работает, только если я знаю точное число вторичных чисел, и тогда это просто куча грязных concat () ...
Привет всем, и спасибо всем за ответ!
Итак, что я хотел сделать с этой строкой, так это использовать contains () для поиска определенных ключевых слов, но я обнаружил, что на самом деле есть комбинация строк со всеми значениями для этого, и мне просто нужно было поделиться ею на случай, если кто-то похожая проблема.
Намек Тода очень помог с этим, я просто добавил к нему условность и магию БАМа.
Вот оно:
Table[@Name='TableName']/Row/Column[@Name='Text' and contains(text(),"keyword")][preceding-sibling::Column[@Name='Primary Number' and text()='15']]
Таким образом, вместо того, чтобы объединить все значения узла, в виде одной строки, а затем с помощью метода содержит (), он ищет в каждой строке слово отдельно и, таким образом, устраняет необходимость невозможного.
Спасибо за помощь, ребята, я не смог бы сделать это без всех замечательных ответов!
(Я бы дал всем голоса "за", но я слишком новый :()