我有两个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>
<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或者只是重读文档并创建新的元素......尽管如此,似乎只是为了合并文档而做了太多的工作。
你可以发布示例代码,显示你如何组合它们? – Jonik 2009-05-19 17:29:53