【发布时间】:2018-05-06 03:32:37
【问题描述】:
您好,我已经查了很多这个问题,但找不到有效的解决方案。我基本上是在尝试删除第 7 行中声明并在第 13 行中删除的“作业”节点。运行时错误为 0,但该节点没有被删除。
NodeList rootNodes = xml.getElementsByTagName("jobs");
Node rootNode = rootNodes.item(0);
Element rootElement = (Element) rootNode;
NodeList jobsList = rootElement.getElementsByTagName("job");
for (int i = 0; i < jobsList.getLength(); i++) {
Node job = jobsList.item(i);
Element jobElement = (Element) job;
if(jobElement.getAttribute("id").equals(
msgEvent.getMessage().getContentRaw().split(" ")[2]))
{
rootNode.removeChild(job);
msgEvent.getChannel().sendMessage("Removed Job " + jobElement.getAttribute("id") + " (Summary: '" + jobElement.getAttribute("summary") + "')").complete();
}
}
这是 XML
<?xml version = "1.0"?>
<jobs>
<job payment = "50000" poster="171048434529337344" collect = "asdf" id = "1" summary="asdfd" expires="5/10/18"> </job>
<job payment = "10000" poster="171048434529337344" collect = "asdf" id = "2" summary="asdf" expires="5/10/18"> </job>
</jobs>
【问题讨论】:
-
你怎么知道节点没有被删除?我试过你的代码,节点确实被删除了。也就是说,当然,如果
msgEvent包含列表中的 id -
嗯,我确定 if 语句确实通过了,因为 sendMessage 发生了。然而,它实际上似乎并没有从运行时或 XML 文件中删除节点。
-
你把xml写回文件了吗?删除仅在内存中