小编典典

从Java中的XML文件中删除元素

java

我已经从Excel数据库中生成了一个xml文件,它自动包含一个名为“ offset
的元素。为了使新文件符合我的需求,我想使用java删除此元素。这是xml内容:

<Root><models><id>2</id><modelName>Baseline</modelName><domain_id>2</domain_id><description> desctiption </description><years><Y2013>value1</Y2013><Y2014>value2</Y2014><Y2015>value3</Y2015><Y2016>value4</Y2016><Y2017>value5</Y2017></years><offset/></models></Root>

我编写了一个代码来读取(使用缓冲的读取器)并将内容写入新文件中,并在以下情况下使用该条件:

        while (fileContent !=null){
        fileContent=xmlReader.readLine();
        if (!(fileContent.equals("<offset/>"))){
            System.out.println("here is the line:"+ fileContent);
            XMLFile+=fileContent;
            }


    }

但这不起作用


阅读 530

收藏
2020-11-26

共1个答案

小编典典

我个人建议使用适当的XML解析器(如Java
DOM)来检查和删除您的节点,而不是将XML作为原始对象处理String(糟糕)。尝试类似这样的操作来删除“偏移”节点。

File xmlFile = new File("your_xml.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);

NodeList nList = doc.getElementsByTagName("offset");
for (int i = 0; i < nList.getLength(); i++) {
    Node node = nList.item(i);
    node.getParentNode().removeChild(node); 
}

上面的代码删除了xml文件中的所有“偏移”节点。

如果考虑到资源/速度问题(例如,当your_xml.xml很大时),则最好使用SAX,它速度更快(代码强度更高)并且不将XML存储在内存中。

一旦您Document已被编辑,你可能会想将它转换为字符串解析到你OutputStream的选择。

希望这可以帮助。

2020-11-26