36、實現添加元素操作的語句如下:
node = root.childNodes.item(0) //確定位置
newNode = myDocument.createElement("company") //創建節點
node.insertBefore(newNode,node.lastNode) //插入節點
textNode = myDocument.creatTextNode("北大方正") //創建文本元素
node.childNodes.item(1).appendChild(textNode) //添加子元素(值)
37、刪除元素:
node = root.childNodes.item(0) //確定位置
oldNode = node.removeChild(node.childNodes.item(1)) //刪除節點
其中,oldNode中存放的是已被刪除的節點。在刪除某個節點時,
以該節點為根的子樹將整個被刪除,因此得到的結果DOM樹恢復原狀。
38、修改元素:
假如想把張三的電子郵件地址更改為zhs@pku.edu.cn,通過下列語句就可以實現:
node = root.childNodes.item(0) //查找節點
emailNode = node.childNodes.item(0) //確定要修改元素位置
emailNode.childNodes.item(0).nodevalue = zhs@pku.edu.cn //替換元素
39、SAX接口分析:
SAX的全稱是Simple APIs for XML,也即XML簡單應用程序接口。
與DOM不同,SAX提供的訪問模式是一種順序模式,這是一種快速讀寫XML數據的方式。
當使用SAX分析器對XML文檔進行分析時,會觸發一系列事件,並激活相應的事件處理函數,
應用程序通過這些事件處理函數實現對XML文檔的訪問,因而SAX接口也被稱作事件驅動接口。
SAX是一種事件驅動的接口,它的基本原理是由接口的用戶提供符合定義的處理器,
XML分析時遇到特定的事件,就去調用處理器中特定事件的處理函數。一般SAX接口都是用Java實現的,
但事實上C++也可以用於實現SAX接口,只是C++的分析器比較少。之所以叫做"簡單"應用程序接口,
是因為這個接口確實非常簡單,絕大多數事情分析器都沒有做,需要應用程序自己去實現,
因而開發者的任務也相應重一些。
40、SAX分析器中的幾個主要API接口作一簡單的介紹。
SAXParserFactory
SAXParserFactory對象用來按照系統屬性中的定義創建一個分析器的實例,接口是Javax.XML.parser. SAXParserFactory。
Parser
org.XML.sax.Parser接口定義了類似setDocumentHandler的方法來創建事件處理函數。
另外,該接口中還定義了parser(URL)方法來對XML文檔進行實際的分析工作。
DocumentHandler
當分析器遇到XML文檔中的標記時,就會激活該接口中的startDocument,endDocument,startElement以及endElement等方法。
另外,characters方法以及processingInstruction方法也是在DocumentHandler接口中實現的。
當分析器遇到元素內部的文本內容時就會激活characters方法,當分析器遇到處理指令時就會激活processingInstruction方法。
ErrorHandler
當分析器在分析過程中遇到不同的錯誤時,ErrorHandler接口中的error、fatalError或者warning方法就會被激活。
DTDHandler
當處理DTD中的定義時,就會調用該接口中的方法。
EntityResolver
當分析器要識別由URI定義的數據時,就會調用該接口中的resolveEntity方法。
一個典型的SAX應用程序至少要提供一個DocumentHandler接口。一個健壯的SAX應用程序還應該提供ErrorHandler接口。