我已经从Excel数据库中生成了一个xml文件,它自动包含一个名为“ offset” 的元素。为了使新文件符合我的需求,我想使用java删除此元素。这是xml内容:
offset
<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(糟糕)。尝试类似这样的操作来删除“偏移”节点。
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的选择。
Document
OutputStream
希望这可以帮助。