gpt4 book ai didi

Java查找并删除子节点

转载 作者:行者123 更新时间:2023-11-30 03:07:59 25 4
gpt4 key购买 nike

我有一个 XML 文件,如下所示:

<CourseList>
<Course>
<CourseName>CoreJava</CourseName>
<Teacher>Bui Duy Linh</Teacher>
<Duration>90 minutes</Duration>
<Student>
<StudentID>C001</StudentID>
<StudentName>Nam</StudentName>
<DateRegister>15/11/2016</DateRegister>
</Student>
<Student>
<StudentID>C002</StudentID>
<StudentName>Vi</StudentName>
<DateRegister>13/11/2016</DateRegister>
</Student>
</Course>

我想删除 ID 为 C001 的学生,但我的搜索功能似乎返回 null

public static Node searchByID(String id, Document doc) {
try {
XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
NodeList list = (NodeList) xp.evaluate("CourseList/Course/Student/StudentID", doc, XPathConstants.NODESET);
for (int i = 0; i < list.getLength(); i++) {
String content = list.item(i).getTextContent();
if (content.equalsIgnoreCase(id)) {
Node p = list.item(i).getParentNode();
return p;
}
}

} catch (XPathExpressionException ex) {
Logger.getLogger(AssignmentXML.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}

有办法解决吗?我应该使用 DOM 来代替吗?感谢任何人的帮助

最佳答案

嗯,结果表明搜索没有问题,但删除功能却有问题。我的旧代码:

Node delNode = searchByID(id, doc);
doc.getDocumentElement().removeChild(delNode);

只删除文档中的Node,而不删除节点的Element。我这样做是为了修复:

Node delNode = searchByID(id, doc);
delNode.getParentNode().removeChild(delNode);

无论如何,谢谢你们的帮助:)

关于Java查找并删除子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34280075/

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