从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= "2Baseline2 desctiption value1value2value3value4value5"; System.out.println(sXML); String sNewXML = sXML.replace("", ""); System.out.println(sNewXML); 
 String xml = "2Baseline2 desctiption value1value2value3value4value5"; xml = xml.replaceAll("", ""); System.out.println(xml); 

在您包含的原始代码中,您有:

 while (fileContent !=null) 

您是否在该行之前将fileContent初始化为某个非null值? 如果没有,则while块中的代码将不会运行。

但我同意其他海报的说法,简单的replaceAll()会更简洁,如果你想做更复杂的事情,真正的XML API会更好。