XML结构javadom中的Delete节点
我试图从用Java中的DOM解析的XML文件中删除一个节点XML结构javadom中的Delete节点,java,xml,dom,Java,Xml,Dom,我试图从用Java中的DOM解析的XML文件中删除一个节点 private Node deleteChildNode (Node node, String nodeName ) { Node tempNode = null; NodeList nl = node.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { tempNode = nl.item(i);
private Node deleteChildNode (Node node, String nodeName )
{
Node tempNode = null;
NodeList nl = node.getChildNodes();
for (int i = 0; i < nl.getLength(); i++)
{
tempNode = nl.item(i);
if (tempNode.getNodeName().equals(nodeName))
{
tempNode= node.removeChild(tempNode);
}
}
return node;
}
但该节点尚未被删除
NodeList nl = nodeClone.getChildNodes();
for (int i = 0; i < nl.getLength(); i++)
System.out.println(nl.item(i).getNodeName());
NodeList nl=nodeClone.getChildNodes();
对于(int i=0;i
显示“L123”节点
提前谢谢 如果给定节点下有多个节点具有节点名称,则代码将无法工作,因为您将跳过节点。删除节点时使用节点列表有点棘手。基本上,当您移除子节点时,if会修改节点列表,以便将以下所有节点移回一个索引。(类似于在使用索引遍历列表时从列表中删除元素)。一个简单的修复方法是在删除子节点后添加“-i;”。如果给定节点下有多个节点具有节点名称,则代码将无法工作,因为您将跳过节点。删除节点时使用节点列表有点棘手。基本上,当您移除子节点时,if会修改节点列表,以便将以下所有节点移回一个索引。(类似于在使用索引遍历列表时从列表中删除元素)。一个简单的修复方法是在删除子节点后添加“-i;”。我使用这个简单的方法来清除所传递节点的子节点:
public static void clearChildNodes(Node node){
while(node.hasChildNodes()){
NodeList nList = node.getChildNodes();
int index = node.getChildNodes().getLength() - 1;
Node n = nList.item(index);
clearChildNodes(n);
node.removeChild(n);
}
}
我使用这个简单的方法来清除传递节点的子节点:
public static void clearChildNodes(Node node){
while(node.hasChildNodes()){
NodeList nList = node.getChildNodes();
int index = node.getChildNodes().getLength() - 1;
Node n = nList.item(index);
clearChildNodes(n);
node.removeChild(n);
}
}
为什么这会有帮助?有一个节点和一个名称。可以找到该节点,并将其存储在“Node.removeChild”之后的“tempNode”中。但其在“节点”中未被删除。这不能依赖于XML文件(因为找到了节点)。它周围一定没有更多的代码。只是搜索要删除的节点。我不能给你更多的代码。我在周五还没有从VersionControl系统中签出更多内容,它可以处理所有xml。为什么这会有帮助?有一个节点和一个名称。可以找到该节点,并将其存储在“Node.removeChild”之后的“tempNode”中。但其在“节点”中未被删除。这不能依赖于XML文件(因为找到了节点)。它周围一定没有更多的代码。只是搜索要删除的节点。我不能给你更多的代码。我在周五没有从VersionControl系统中签出更多内容,它可以处理所有xml。非常感谢。就这样。这个简单的修正非常有效:D我想“投赞成票”。。但我的名声是@Skolleus-既然你问了这个问题,你就不会投票,你会“接受”答案。@Skolleus-而且,在将来,如果你清楚有多个匹配节点,其中一些节点被删除了,而其他节点没有被删除,你的问题可能会得到更快的回答。非常感谢。就这样。这个简单的修正非常有效:D我想“投赞成票”。。但我的名声是@Skolleus——既然你问了这个问题,你就不投赞成票,你就“接受”了答案。@Skolleus——而且,在将来,如果你清楚地知道有多个匹配节点,其中一些节点被删除了,而不是其他节点,你的问题可能会得到更快的回答。