代码之家  ›  专栏  ›  技术社区  ›  Sembrano

JDOM中的元素列表

  •  0
  • Sembrano  · 技术社区  · 12 年前

    我有一个关于xml元素列表的问题

    我正在尝试删除下面的所有内容以及标签。

    但当我调试参数列表时,我注意到列表如下所示:

    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 回复  |  直到 12 年前
        1
  •  1
  •   rolfl    12 年前

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

    你可能只想做: element.detach(); 相反这将从文档中移除该元素(并且因此也移除其所有内容)。

        2
  •  1
  •   mithil-studytrails    12 年前

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