Я не могу программно перемещаться по документу XML, и мне нужно однострочное решение XPath по причинам, которые я опишу в конце.
Я работаю со схемой XML, которая выглядит примерно так, как показано ниже. (Это то, что я должен использовать как есть.)
<Root>
<!-- Child 1 -->
<Child>
<Name>Joe</Name>
<Age>12</Age>
</Child>
<!-- Child 2 -->
<Child>
<Name>Mike</Name>
<Age>25</Age>
</Child>
<!-- Child 3 -->
<Child>
<Name>Jane</Name>
<Age>20</Age>
</Child>
</Root>
Предполагая, что я уже на узле "Джо" (то есть элемент имени внутри дочернего элемента 1), мне нужно определить запрос XPath, который "обернет" этот узел следующим образом:
<Root>
<!-- Child 1 -->
<Child>
<Name>Joe</Name>
<Age>12</Age>
</Child>
</Root>
Я пробовал различные комбинации предка, объединения строк, конкатов и т. Д., Но, похоже, не могу найти решение, которое правильно "оборачивает" элемент. (То, как я использовал ancestor, возвращало, например, все дочерние узлы, а это не то, что мне нужно.)
Некоторые другие соображения:
- Решением должен быть однострочный запрос XPath, если это возможно (по причинам, указанным ниже).
- Он должен быть достаточно универсальным, чтобы работать с любым дочерним элементом (т. Е. Он не может предполагать, что я всегда на первом, втором или третьем дочернем элементе, например).
- Из приведенного выше примера вы можете видеть, что на самом деле сам по себе корневой узел не нужен, а только его тег (т.е. я не хочу, чтобы все дочерние узлы находились под ним). Тем не менее, мне нужен фактический дочерний узел (чтобы я получил имя и возраст).
ПРИМЕЧАНИЕ. Несмотря на это, я не могу программно перемещаться по XML. Я использую библиотеку (код которой я не могу изменить), в которой я должен определить все в терминах однострочных запросов XPath в файле конфигурации. По сути, он будет перемещаться по всем элементам Name, поэтому мое решение должно работать с этого момента.