我们可以修改XML文件,比如删除,在运行时使用SAX解析器更新节点吗?

我是xml解析的新手,我们可以更新或修改,比如在运行时使用SAX解析器删除XML节点,并将更新的数据作为XML流式传输,或者如果需要,将其转换为我们自己的格式? 正如DOM解析器所做的那样。

dbFactory = DocumentBuilderFactory.newInstance(); docBuilder = dbFactory.newDocumentBuilder(); document = docBuilder.parse("src/"+xmlFile); tranformerFactory = TransformerFactory.newInstance(); transformer = tranformerFactory.newTransformer(); for (int i = 0; i < inputElementsArrayToRemove.length; i++) { element = (Element)document.getElementsByTagName(inputElementsArrayToRemove[i]).item(0); if(element != null) { // Removes the node from the document element.getParentNode().removeChild(element); } } // Normalize the DOM tree to combine all adjacent nodes document.normalize(); // Here, transforming(Converting) the document source to the another XML file Source source = new DOMSource(document); Result dest = new StreamResult(new FileOutputStream(new File("src/"+resultXmlFileName))); // transform method to write out the DOM as XML data. transformer.transform(source, dest); 

是的,使用XMLReader和XMLFilter API。 请参阅此问题和答案以获取示例。

我们可以使用SAX解析器读取或写入xml。 要编辑或更新,我们只需要使用DOM解析器。

你不能。 SAX Parser生成事件流并将它们提供给您的处理程序。 Handler doessomething它喜欢它。

DOM解析器生成节点树,您可以修改它并将其保存为XML(但它也消耗内存)

XPP解析器允许您逐个将xml事件从流中拉出,并且可以使用解析器将其包装并动态修改事件。 我推测是接近你的任务

不。 SAX是基于事件的解析器,它告诉它何时遇到令牌。 它用于阅读。 我们可以用它来写吗?