从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