Java 将 XML 文档附加到现有文档
我有两个已创建的 XML 文档,我想将这两个文档合并到一个新信封中。所以我有
<alert-set>
<warning>National Weather Service...</warning>
<start-date>5/19/2009</start-date>
<end-date>5/19/2009</end-date>
</alert-set>
和
<weather-set>
<chance-of-rain type="percent">31</chance-of-rain>
<conditions>Partly Cloudy</conditions>
<temperature type="Fahrenheit">78</temperature>
</weather-set>
我想做的是在根节点中将两者组合在一起:< DataSet>组合的文档< /DataSet>
我尝试创建一个临时文档,并将子级替换为文档的根节点:
<DataSet>
<blank/>
<blank/>
</DataSet>
我希望用两个文档的根元素替换这两个空白,但我得到“WRONG_DOCUMENT_ERR:节点用于与创建它的文档不同的文档中。我尝试采用和导入根节点,但我得到同样的错误。
难道没有一些简单的方法来组合文档而不必通读并为每个节点创建新元素吗?
编辑:示例代码片段 现在只是尝试将一个移动到“空白”文档...importNode 和 adoptNode 函数无法导入/采用 Document 节点,但它们无法导入元素节点及其子树...或者如果是这样,它似乎不适用于附加/替换。
Document xmlDoc; //created elsewhere
Document weather = getWeather(latitude, longitude);
Element weatherRoot = weather.getDocumentElement();
Node root = xmlDoc.getDocumentElement();
Node adopt = weather.adoptNode(weatherRoot);
Node imported = weather.importNode(weatherRoot, true);
Node child = root.getFirstChild();
root.replaceChild(adopt, child); //initially tried replacing the <blank/> elements
root.replaceChild(imported, child);
root.appendChild(adopt);
root.appendChild(imported);
root.appendChild(adopt.cloneNode(true));
所有这些都抛出了DOMException:WRONG_DOCUMENT_ERR:节点用于与创建它的文档不同的文档中。
我想我必须弄清楚如何使用stax,或者只是重新阅读文档并创建新元素......不过,仅仅为了合并文档,这似乎有点太多了。