gpt4 book ai didi

java - 如何使用java中的文本内容从xml文件中删除元素?

转载 作者:行者123 更新时间:2023-12-02 04:07:46 25 4
gpt4 key购买 nike

我的 xml 文件中有以下内容

<data>
<group>
<groupname>a</groupname>
<groupuser>Saw</groupuser>
<groupuser>John</groupuser>
</group>
<group>
<groupname>b</groupname>
<groupuser>John</groupuser>
<groupuser>Saw</groupuser>
</group>
<group>
<groupname>c</groupname>
<groupuser>John</groupuser>
<groupuser>Saw</groupuser>
</group>
<user>
<username>John</username>
<password>1234</password>
</user>
</data>

我正在尝试删除此元素

<groupuser>John</groupuser>

这是我的方法:

public void removeUserGroup(String username) {
try {
File fXmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();

NodeList nList = doc.getElementsByTagName("group");

for (int temp = 0; temp < nList.getLength(); temp++) {
Element group = (Element) nList.item(temp);

for (int temp2 = 0; temp2 < group.getElementsByTagName("groupuser").getLength(); temp2++) {
Element name = (Element) group.getChildNodes().item(temp2);

if (name.getTextContent().equals(username))
group.getParentNode().removeChild(group);
}
}
} catch (Exception ex) {
System.out.println("Database exception");
}
}

代码进入这里并且不会抛出异常

group.getParentNode().removeChild(group);

但是 xml 文件中没有任何反应!我在另一个问题中使用了这个方法,我将其修改为在 <group> 的子级上循环但似乎不起作用

最佳答案

首先,不要将 xml 保存回文件。

其次,这段代码是错误的,尽管它在某些情况下可能有效:

for (int temp2 = 0; temp2 < group.getElementsByTagName("groupuser").getLength(); temp2++){

将结果保存到 NodeList 并循环遍历列表中的节点。

第三 - 您要删除整个组,而不仅仅是组用户。

关于java - 如何使用java中的文本内容从xml文件中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34091774/

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