JDOM中的元素列表

时间:2014-02-18 08:46:34

标签: java xml jdom

我对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);

debug

2 个答案:

答案 0 :(得分:1)

方法调用:element.removeContent();不会从其父元素中删除元素,而是从元素中删除所有内容(使其为空)。

您可能只想做:element.detach();而不是....这将从文档中删除元素(因此也是其所有内容)。

答案 1 :(得分:1)

您可以使用JDOM2过滤器来获取特定类型的元素。 查看This示例,了解如何使用JDOM2中的过滤器检索XML的特定元素。