【发布时间】:2021-10-08 09:59:24
【问题描述】:
我正在寻找一种满足某些映射条件的合并 XML 的最佳方法
XML1:
<root>
<key>123<key>
</root>
XML2:
<root>
<base_node_1>
<key>123<key>
<data1>aaa</data1>
<data2>bbb</data2>
</base_node_1>
<base_node_2>
<key>456<key>
<data1>xxx</data1>
<data2>yyy</data2>
</base_node_2>
</root>
预期输出:
<root>
<key>123<key>
<data1>aaa</data1>
<data2>bbb</data2>
</root>
将 XML1 中的 'key' 匹配到 XML2 中的块。如果找到匹配,则将属性映射到最终输出 xml。
这里需要注意的是 XML2 标签中的 'base_node' 可能会改变。大约有 100 个可能的标签。
使用 JAXB 将 XML 转换为 Java 对象并在 Java 中映射它们是一种方法。 但是考虑到第二个 xml - XML2 的结构,JAXB 看起来很复杂
有没有更好的方法来做到这一点?可能是基于 XPATH 的映射?
【问题讨论】:
-
这在 XSLT 中很容易,在 XSLT 2 或 3 中更容易,您可以使用
key函数,第三个参数是要搜索的文档。但是示例相当简单,不清楚是否总是只有第二个文档中根元素的两个子元素,或者如果有更多子元素和多个匹配项,如果你真的想合并所有数据,你想要哪种结构在一起。 -
@MartinHonnen 感谢您的意见。关于你的问题。第二个 XML 可以有 2 个以上的子元素。而且这里预计只有一个区块匹配。
-
看我的回答,应该可以解决的。