从java中的XML文件中删除元素
我从excel数据库生成了一个xml文件,它自动包含一个名为“ offset
”的元素。 为了使我的新文件符合我的需要,我想使用java删除这个元素。 这是xml内容:
2Baseline2 desctiption value1value2value3value4value5
我创建了一个读取代码(使用缓冲读取器)并将内容写入新文件并使用以下条件:
while (fileContent !=null){ fileContent=xmlReader.readLine(); if (!(fileContent.equals(""))){ System.out.println("here is the line:"+ fileContent); XMLFile+=fileContent; } }
但它不起作用
我个人建议使用适当的XML解析器(如Java DOM)来检查和删除节点,而不是将XML作为原始String
处理(yuck)。 尝试这样的东西来删除你的’偏移’节点。
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
您可能希望将其转换为String以解析为您选择的OutputStream
。
希望这可以帮助。
只是尝试用空字符串替换不需要的字符串。 它很快……而且非常脏。 但是可以快速解决你的问题……以后再重新出现;-)
fileContent.replace(“
,”“);
String sXML= "2 Baseline 2 desctiption value1 value2 value3 value4 value5 "; System.out.println(sXML); String sNewXML = sXML.replace(" ", ""); System.out.println(sNewXML);
String xml = "2 Baseline 2 desctiption value1 value2 value3 value4 value5 "; xml = xml.replaceAll(" ", ""); System.out.println(xml);
在您包含的原始代码中,您有:
while (fileContent !=null)
您是否在该行之前将fileContent初始化为某个非null值? 如果没有,则while块中的代码将不会运行。
但我同意其他海报的说法,简单的replaceAll()会更简洁,如果你想做更复杂的事情,真正的XML API会更好。