<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • XML認證教程:DOM Parser

    時間:2024-10-18 13:23:32 IBM認證 我要投稿
    • 相關推薦

    XML認證教程:DOM Parser

      DOM= Document Object Model,文檔對象模型,DOM可以以一種獨立于平臺和語言的方式訪問和修改一個文檔的內容和結構。

      DOM基礎

      在開始使用 DOM 之前,了解它實際表示什么是值得的。DOM Document 是以層次結構組織起來的節點,或信息片段,的集合。這種層次結構允許開發 者瀏覽樹來查找特定信息。通常,分析結構需要在完成任何工作之前裝入整個 文檔并且裝入層次結構。

      由于 DOM 是基于信息的層次結構,因此它被稱為是基于樹的。

      對于極其大的文檔,裝入整個文檔并對該文檔進行解析會很慢且占用大量資源, 所以要用其它方式來處理數據。一些基于事件的模型,如 Simple API for XML(SAX),是工作在數據流之上,在數據流經過時對其進行處理。基于事件 的 API 消除了在內存中構建數據樹的需要,但它不允許開發者實際更改原始 文檔中的數據。

      另一方面,DOM 還提供了一個 API,該 API 允許開發者為創建應用程序而在樹的任何地方添加、編輯、移動或除去節點。

      DOM 基本的節點類型

      XML 中最常見的節點類型:

      Node: DOM 基本的數據類型。

      Element: 您將最主要處理的對象是 Element。

      Attr: 代表一個元素的屬性。

      Text: 一個 Element 或 Attr 的實際內容。

      Document: 代表整個 XML 文檔。一個 Document 對象通常也被稱為一棵 DOM 樹。

      較不常見的節點類型:CData、注釋、處理指令和文檔片段:

      CData:“字符數據”的縮寫注釋:注釋包含有關數據的信息,通常應用程序會忽略它們。處理指令:PI 是專門針對應用程序的信息。文檔片段:為了形成良好的格式,文檔只能有一個根元素。有時,必須臨時創建幾組元素,這些元素不是滿足需求所必要的。文檔片段類似于這樣:

      Silver Show Saddle, 16 inch

      825.00

      1

      Premium Cinch

      49.00

      1

      解析文檔的三步過程

      為了使用 XML 文件中的信息,必須解析該文件以創建 Document 對象。

      Document 對象是一個接口,所以不能直接實例化;相反,應用程序一般使用 factory。確切的過程隨實現的不同而不同,但想法是相同的。在示例 JAXP 環境中,解析文件是一個三步過程:

      創建 DocumentBuilderFactory。該對象將創建 DocumentBuilder。

      創建 DocumentBuilder。 DocumentBuilder 將實際進行解析以創建 Document 對象。

      解析該文件以創建 Document 對象。

      如果需要,在不必更改代碼的情況下,JAXP 允許插進不同的解析器。讓我們繼續,開始構建應用程序。

      基本的應用程序

      從創建基本的應用程序,名為 OrderProcessor 的類開始。

      import javax.xml.parsers.DocumentBuilder;

      import javax.xml.parsers.DocumentBuilderFactory;

      import java.io.File;

      import org.w3c.dom.Document;

      public class OrderProcessor {

      public static void main (String args[]) {

      File docFile = new File("orders.xml");

      Document doc = null;

      try {

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

      DocumentBuilder db = dbf.newDocumentBuilder();

      doc = db.parse(docFile);

      } catch (Exception e) {

      System.out.print("Problem parsing the file.");

      }

      }

      }

      首先,Java 導入必要的類,然后創建 OrderProcessor 應用程序。在本教程中的這個示例將只處理一個文件,所以為簡短起見,該應用程序包含對它的直接引用。

      應用程序在 try-catch 塊外部定義了 Document 對象,以便在后面使用該對象。try-catch 使您能執行可能會拋出異常的一些操作,這樣不會危及整個應用程序。如果異常拋出,則應用程序簡單地執行相應的 catch 代碼。

      在 try-catch 塊內部,應用程序創建 DocumentBuilderFactory,然后使用它來創建 DocumentBuilder。最后,DocumentBuilder 解析該文件以創建 Document。

      DOM 常用方法

      Document.getDocumentElement()

      返回文檔的根(root)元素。

      Node.getFirstChild() and Node.getLastChild()

      返回給定 Node 的第一個子女。

      Node.getNextSibling() and Node.getPreviousSibling()

      這些方法返回下一個或前一個給定 Node 的同胞。

      Node.getAttribute(attrName)

      對給定的 Node,返回給定名稱的屬性。例如,如果您要獲得名為 id 屬性 的對象,可調用 getAttribute("id")。

      編輯文檔

      更改節點數據

      Node.setNodeValue(elemValue);

      添加節點

      String totalString = new Double(total).toString();

      Node totalNode = doc.createTextNode(totalString);

      //Document 對象創建新的文本節點,該節點帶有作為值的 totalString

      Element totalElement = doc.createElement("total");

      //創建新元素 total

      totalElement.appendChild(totalNode);

      // 將節點添加到新的 total 元素。

      thisOrder.insertBefore(totalElement, thisOrder.getFirstChild());

      //將新元素添加到 Document,指定新的 Node,然后指定新 Node 在 Node 之前

      除去節點

      Node deadNode = thisOrderItem.getParentNode().removeChild(thisOrderItem);

      替換節點

      Element backElement = doc.createElement("backordered");

      //創建新元素 backordered

      Node deadNode =

      thisOrderItem.getParentNode().replaceChild(backElement,thisOrderItem);

      創建和設置屬性

      Element backElement = doc.createElement("backordered");

      //創建新元素 backordered

      backElement.setAttributeNode(doc.createAttribute("itemid"));

      //創建新屬性 itemid

      String itemIdString = thisOrderItem.getAttributeNode("itemid").getNodeValue();

      //取得thisOrderItem的屬性itemid的值

      backElement.setAttribute("itemid", itemIdString);

      //設置backElement的屬性item的值,可以省略createAttribute

      Node deadNode =

      thisOrderItem.getParentNode().replaceChild(backElement,thisOrderItem);

      除去屬性

      Element thisOrder = (Element)orders.item(orderNum);

      Element customer = (Element)thisOrder.getElementsByTagName("cusomertid").item(0);

      customer.removeAttribute("limit");

      //去除屬性limit

    【XML認證教程:DOM Parser】相關文章:

    XML認證考試知識點:Parser08-21

    XML入門教程10-22

    XML認證元素類型聲明05-28

    關于XML的入門教程10-06

    關于IBM XML認證考試的要點09-07

    XML名稱空間入門教程06-07

    W3C DOM 活動教程08-08

    MCSA認證教程詳解10-04

    IBM XML認證知識點:Dtd09-01

    關于XML入門教程:分析XM09-25

    主站蜘蛛池模板: 2021国产精品视频网站| 国产微拍精品一区二区| 综合在线视频精品专区| 久久精品亚洲福利| 久久精品无码一区二区app| 欧美成人精品网站播放| 欧美日韩在线精品一区二区三区激情综合| 久久久久99精品成人片牛牛影视| 欧美日韩专区麻豆精品在线| 亚洲七七久久精品中文国产| 少妇人妻无码精品视频app| 精品无码国产自产拍在线观看| 国产成人精品日本亚洲| 精品四虎免费观看国产高清午夜| 亚洲国产精品久久久久久| 国产精品自产拍在线18禁| 蜜臀久久99精品久久久久久| 亚洲AV无码精品无码麻豆| 国产精品高清一区二区三区| 久久99精品国产99久久| 国产微拍精品一区二区| 亚洲精品无码久久一线| 91精品国产福利尤物| 国产69精品久久久久99| 日韩精品免费一线在线观看| 日韩精品一区二区三区中文| 国产在线拍揄自揄视精品不卡| 国产精品成人免费观看 | 成人精品视频成人影院| 久久久99精品成人片中文字幕| 中文精品无码中文字幕无码专区| 国内精品久久久久久久97牛牛| 久久se精品一区精品二区| 国产精品亚洲玖玖玖在线观看| 亚洲精品无码久久久久sm| 精品国产综合成人亚洲区| 久久久久久极精品久久久| 国产精品186在线观看在线播放| 国产偷国产偷高清精品| 国产精品亚洲日韩欧美色窝窝色欲| 国产精品极品|