我有2个包含类似XML的文档对象。例如:在保留xsi的同时合并文档:类型
<tt:root xmlns:tt="http://myurl.com/">
<tt:child/>
<tt:child/>
</tt:root>
而另外一个:
<ns1:root xmlns:ns1="http://myurl.com/" xmlns:ns2="http://myotherurl.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns1:child/>
<ns1:child xsi:type="ns2:SomeType"/>
</ns1:root>
我需要将它们与1个元素和4个个子元素合并到1号文件。 问题是,如果我使用document.importNode
函数进行合并,那么它正确地处理名称空间到处都是,但是xsi:type元素。那么我得到的结果是这样的:
<tt:root xmlns:tt="http://myurl.com/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tt:child/>
<tt:child/>
<ns1:child xmlns:ns1="http://myurl.com/"/>
<ns1:child xmlns:ns1="http://myurl.com/" xsi:type="ns2:SomeType"/>
</tt:root>
正如你可以看到,NS2是在xsi:type
使用,但不被任何定义。有没有自动化的方法来解决这个问题?
谢谢。
新增:
如果这个任务是不可能使用默认的Java DOM库来完成的,也许有我可以用它来完成我的任务了一些其他图书馆?
你有没有用'deep'参数玩过这个工作对我来说,当我的合并文档是失踪的xmlns in'importNode'已经?也许你需要'deep = true'来正确地导入属性节点。 – 2011-06-01 08:56:55
是的,我使用deep = true,但这没有帮助。它似乎只是简单地将xsi:type属性解析为一个简单的字符串参数,而不是一个类型参数。 – bezmax 2011-06-01 10:07:00
您的第二个文档不是名称空间,因为它使用的前缀“xsi”尚未绑定。 – alexbrn 2011-06-01 10:56:10