XML初學進階學習筆記(5)(轉)

amyz發表於2007-08-12
XML初學進階學習筆記(5)(轉)[@more@]

  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介面。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-950294/,如需轉載,請註明出處,否則將追究法律責任。

相關文章