gpt4 book ai didi

java - 使用 Java 更改 xml-node 的节点名称

转载 作者:太空狗 更新时间:2023-10-29 23:02:21 25 4
gpt4 key购买 nike

我有以下场景:我有一个 XML 文档,例如像这样

<someRootElement>
<tag1>
<tag2
someKey=someValue
someKey2=someValue2
/>
<tag3/>
<tag4
newKey=newValue
newKey2=newValue2
/>
</tag1>
</someRootElement>

现在我希望在不丢失子节点的情况下将父节点 tag1 称为 reallyCoolTag。我尝试了以下方法,但不幸的是它没有像我希望的那样工作(但我知道为什么,我猜 b/c 它缺少一些东西):

// the new element:
Element neu = doc.createElement( newValue );
// append it to the root:
root.appendChild( neu );
// get all the child nodes:
NamedNodeMap nnm = nodes.item(i).getAttributes();
for( int dg = 0; dg < nnm.getLength(); dg++ ){
neu.setAttribute( nnm.item( dg ).getNodeName(),
nnm.item( dg ).getNodeValue() );
}
//---------------------------------------------------------
// HERE I GUESS I AM MISSING THE PART WHERE THE CHILD NODES
// ARE BEING APPENDED TO THE NEW NODE?????
//---------------------------------------------------------
// nodes.item(i) := the old value (nodes := is a NodeList
root.replaceChild( neu, nodes.item(i));
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
DOMSource source = new DOMSource( doc );
StreamResult result = new StreamResult( xml );
transformer.transform( source, result );
nodes.item( i ).getParentNode().removeChild( nodes.item(i) );

现在这在一定程度上起作用了,正如我提到的,我想我错过了子节点被附加的部分,但我真正想知道的是,是否有一个非常短的方法来重命名父节点而不必复制所有内容并替换整个内容?

提前致谢!!!

最佳答案

使用 Document.renameNode :

NodeList nodes = document.getElementsByTagName("tag1");
for (Node eachNode: nodes) {
document.renameNode(eachNode, null, "reallyCoolTag");
}

关于java - 使用 Java 更改 xml-node 的节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1299926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com