【发布时间】:2011-08-11 16:31:17
【问题描述】:
我有两个不同的 xml 文件,如下所述,想要合并这些 xml 文件并获得预期的输出,可能使用 xpath 或 dom 解析,但不是 XSLT,因为 xml 总是不相同
XML1.xml
<personinfo>
<person>
<name><name>
<age></age>
<address>
<street></street>
<city></city>
<address>
</person>
<person>
<name><name>
<age></age>
<address>
<street></street>
<city></city>
<address>
</person>
<person>
<name><name>
<age></age>
<address>
<street></street>
<city></city>
<address>
</person>
</personinfo>
XML2.xml
<personinfo>
<person>
<name>tom<name>
<age>26</age>
<address>
<street>main street</street>
<city>washington</city>
<address>
</person>
<person>
<name>mike<name>
<age>30</age>
<address>
<street>first street</street>
<city>dallas</city>
<address>
</person>
</personinfo>
Expected.xml
<personinfo>
<person>
<name>tom<name>
<age>26</age>
<address>
<street>main street</street>
<city>washington</city>
<address>
</person>
<person>
<name>mike<name>
<age>30</age>
<address>
<street>first street</street>
<city>dallas</city>
<address>
</person>
<person>
<name><name>
<age></age>
<address>
<street></street>
<city></city>
<address>
</person>
</personinfo>
提前致谢....
【问题讨论】:
-
这里还有更多的事情要做,而不仅仅是合并。第一个文件有三个空的
<person>元素,但输出只有一个。你如何决定保留什么和删除什么?此外,“不是 XSLT,因为 xmls 总是不相同”的说法也不太合理。您能否进一步解释为什么您认为 XSLT 不合适? -
如果您查看第一个 xml 有三个人员标签,第二个有两个人员标签...我所做的只是将第二个 xml 中的值填充到模板中第一个..我不愿意使用 XSLT,因为模板 xml(第一个)是在旅途中生成的,所以我没有可以自动生成 XSLT 的机制 ..
-
即使您的输入发生变化,也不要认为您需要“自动生成”XSLT。您可以构建一个通用样式表,对不同的 XML 文件执行相同的操作。如果您只想按照评论中的说明合并空节点,则可以这样做。
-
我不知道如何实现这一点...你能帮我吗...