我们可以修改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是基于事件的解析器,它告诉它何时遇到令牌。 它用于阅读。 我们可以用它来写吗?
- 如何从java中的特定日期获取前7个日期?我从当前日期获得7个日期,但我想从特定日期开始
- 如何删除Google App Engine(Java)中的索引?
- Firestore – 在本地合并两个查询
- 无法找到属于对象的方法
- java,驱动APIv2,appengine 1.7.3,struts2.3.4.1,OAuth2。 TokenResponseException:400 OK invalid_grant
- 如何解决java中的双精度问题
- android – 获取位置并仅在条件为真时将数据发送到远程服务器
- 谷歌地图 – Android应用程序无法加载 – 空对象引用
- 在克隆中使用协变返回类型真的会破坏兼容性吗?