从Java中的XPath填充XML文件

时间:2018-10-25 08:15:33

标签: java xml xpath

我有一个XML文件,该文件可能为空或已经部分填充,并且给了我一个XPath,应该在其中插入更多的xml节点。哪种更清洁的方式创建所需的所有子节点? 在我看来,我想找到类似mkdirs()类的java.io.File方法的东西。

示例, 给定XPath /root/child/grandson,预期的输出将是(基于空的输入文件):

<root>
    <child>
        <grandson></grandson>
    </child>
</root>

编辑:我现在已经设法通过拆分XPath和嵌套节点来解决我的简单用例,任何其他更清洁的解决方案都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

如果路径都这么简单(用斜杠分隔的一系列元素名称),则可以在XQuery或XSLT中使用递归函数来完成。在XQuery语法中:

declare function local:generate($names as xs:string*) as element(*) {
   if (exists($names)) then
      element{head($names)}{local:generate(tail($names)}
   else ()
};
local:generate(tokenize("/root/child/grandson", "/")[.]);

说明:首先在“ /”边界上分割字符串;使用谓词[.]消除空字符串;将结果的字符串序列传递给一个函数,该函数创建一个以列表中第一个字符串命名的元素,然后调用自身以处理列表的其余部分,并将结果附加为所创建元素的内容。