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

我已经从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;

}

}

但这不起作用

回答:

我个人建议使用适当的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的选择。

希望这可以帮助。

以上是 从Java中的XML文件中删除元素 的全部内容, 来源链接: utcz.com/qa/408697.html

回到顶部