2012-05-23 45 views
1

我是xml解析的新手,我們是否可以更新或修改,如在運行時使用SAX解析器刪除XML的節點,並將更新後的數據作爲XML進行流式處理,或者如果需要將其轉換爲我們自己的格式?像DOM解析器一樣。我們是否可以在運行時修改XML文件,如刪除,使用SAX解析器更新節點?

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); 

回答

0

我們可以使用SAX解析器讀取或寫入xml。編輯或更新我們只需要使用DOM解析器。

0

你不能。 SAX解析器生成事件流並將它們提供給您的處理程序。 Handler doessomething它喜歡它。

DOM解析器產生節點樹,你可以對其進行修改並保存回爲XML (但同時也消耗內存)

XPP解析器允許你通過一個拉XML事件輸出流的一個,而你 可以用你的解析器來包裝它,並且可以隨時修改事件。我會推測是關閉 到您的任務

0

沒有。 SAX是基於事件的解析器,它告訴它什麼時候遇到令牌。它用於閱讀。我們可以使用它寫嗎?

相關問題