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>

<blank/>

<blank/>

</DataSet>

我当时希望用两个文档的根元素替换两个空格,但我得到“

WRONG_DOCUMENT_ERR:一个节点在与创建它的文档不同的文档中使用”。我尝试采用和导入根节点,但是遇到相同的错误。

是否有一些简便的方法来合并文档,而不必为每个节点通读并创建新元素?

编辑:示例代码段暂时仅尝试将其移至“空白”文档…

importNode和acceptNode函数无法导入/采用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或只是重新阅读文档并创建新元素…不过,仅仅合并文档似乎有点太多的工作。

回答:

这有点棘手,但可以运行以下示例:

public static void main(String[] args) {

DocumentImpl doc1 = new DocumentImpl();

Element root1 = doc1.createElement("root1");

Element node1 = doc1.createElement("node1");

doc1.appendChild(root1);

root1.appendChild(node1);

DocumentImpl doc2 = new DocumentImpl();

Element root2 = doc2.createElement("root2");

Element node2 = doc2.createElement("node2");

doc2.appendChild(root2);

root2.appendChild(node2);

DocumentImpl doc3 = new DocumentImpl();

Element root3 = doc3.createElement("root3");

doc3.appendChild(root3);

// root3.appendChild(root1); // Doesn't work -> DOMException

root3.appendChild(doc3.importNode(root1, true));

// root3.appendChild(root2); // Doesn't work -> DOMException

root3.appendChild(doc3.importNode(root2, true));

}

以上是 Java将XML文档附加到现有文档 的全部内容, 来源链接: utcz.com/qa/399594.html

回到顶部