我无法以编程方式浏览 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>
假设我已经在“Joe”节点(即 Child 1 中的 Name 元素),我需要定义一个 XPath 查询来“包装”该节点,如下所示:
<Root>
<!-- Child 1 -->
<Child>
<Name>Joe</Name>
<Age>12</Age>
</Child>
</Root>
我尝试了各种祖先、字符串连接、连接等的组合,但似乎找不到正确“包装”元素的解决方案。(例如,我使用祖先的方式是返回所有子节点,这不是我需要的。)
其他一些考虑:
- 如果可能的话,解决方案必须是单行 XPath 查询(原因如下)。
- 它必须足够通用以适用于任何 Child 元素(例如,它不能假设我总是在第一个或第二个或第三个孩子)。
- 从上面的示例中,您可以看到我实际上并不需要实际的 Root 节点本身,只需要它的标签(即我不希望它下面的所有子节点)。但是,我确实需要实际的子节点(以便获得名称和年龄)。
注意:对于它的价值,我实际上无法以编程方式导航 XML。我正在使用一个库(我无法更改其代码),在该库中,我必须根据配置文件中的单行 XPath 查询来定义所有内容。它本质上会浏览所有的 Name 元素,所以我的解决方案必须从那时开始工作。