У меня есть XML-документ и несколько путей, которые я могу использовать для извлечения данных из него.Использование XPath для извлечения элементов из определенного места в документе
Пример путь:
Bill/Id
Bill/Line/AccountBasedExpenseLineDetail
Сложная часть является то, что мне нужно, чтобы извлечь каждую точку данных из одной и той же «области» документа. Например, если бы я был выдан документ, как это:
<Bill domain="QBO" sparse="false">
<Line>
<AccountBasedExpenseLineDetail>
1
</AccountBasedExpenseLineDetail>
</Line>
</Bill>
<Bill domain="QBO" sparse="false">
<Id>148</Id>
</Bill>
я на самом деле нужно было бы не вернуть ничего заданного выше пути, так как <AccountBasedExpenseLineDetail>
и <Id>
теги найдены в различных <Bill>
тегов.
Однако, если документ выглядит следующим образом:
<Bill domain="QBO" sparse="false">
<Id>148</Id>
<Line>
<AccountBasedExpenseLineDetail>
1
</AccountBasedExpenseLineDetail>
</Line>
</Bill>
Я хотел бы вернуться 148 для Bill\Id
пути и 1 для Bill/Line/AccountBasedExpenseLineDetail
пути, так как они оба находятся в одном Bill
объекта.
Это довольно сложно, поскольку это требование выполняется для более сложных таблиц, а также с глубоко вложенными объектами. Есть ли какая-то функциональность XPath, которую я пропускаю, что может сделать эту проблему немного проще? Поскольку он стоит прямо сейчас, я могу придумать довольно сложное рекурсивное решение, но я не хочу начинать работать над ним, если у меня что-то неясно.