我对xml
中的元素列表有疑问我正在尝试删除所有内容以及标签。
但是当我调试我的param列表时,我发现我的列表看起来像这样:
text
element
text
element
text
element
text
element
但我只想要列表中的元素而不是文本,所以我可以更轻松地删除正确的元素。 怎么做?
这是我的代码:
public void deleteParameter(int row, int index) {
int objTypeIndex = index + 1;
File xml = new File(XMLEditorService.getXMLEditorService().getFile());
try {
XMLOutputter xmlOut = new XMLOutputter();
org.jdom2.Document doc = new SAXBuilder().build(xml);
Namespace ns = Namespace.getNamespace("http://www.xxx.com");
org.jdom2.Element rootNode = doc.getRootElement();
org.jdom2.Element typeContent = rootNode.getChildren().get(
objTypeIndex);
List<Element> list = typeContent.getChildren("param", ns);
if (list.size() > 0) {
Element element = list.get(row); //remove correct element
element.removeContent();
System.out.println("element removed: " + element.getName());
xmlOut.setFormat(Format.getPrettyFormat());
xmlOut.output(doc, new FileWriter(XMLEditorService
.getXMLEditorService().getFile()));
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
}
我所引用的列表是这一行:List<Element> list = typeContent.getChildren("param", ns);
答案 0 :(得分:1)
方法调用:element.removeContent();
不会从其父元素中删除元素,而是从元素中删除所有内容(使其为空)。
您可能只想做:element.detach();
而不是....这将从文档中删除元素(因此也是其所有内容)。
答案 1 :(得分:1)
您可以使用JDOM2过滤器来获取特定类型的元素。 查看This示例,了解如何使用JDOM2中的过滤器检索XML的特定元素。