JAVA中xml與dom解析

2021-08-19 07:10:47 字數 1970 閱讀 9105

xml現在已經成為一種通用的資料交換格式,它的平台無關性,語言無關性,系統無關性,給資料整合與互動帶來了極大的方便。對於xml本身的語法知識與技術細節,需要閱讀相關的技術文獻,這裡面包括的內容有dom(document object model),dtd(document type definition),sax(****** api for xml),xsd(xml schema definition),xslt(extensible stylesheet language transformations).

xml在不同的語言裡解析方式都是一樣的,只不過實現的語法不同而已。基本的解析方式有兩種,一種叫sax,另一種叫dom。sax是基於事件流的解析,dom是基於xml文件樹結構的解析。假設我們xml的內容和結構如下: 

<?xml version="1.0" encoding="utf-8"?> 

ddviplinuxm30

dom解析:

dom解析原理:xml解析器一次性把整個xml文件載入進記憶體,然後在記憶體中構建一顆document的物件樹,通過document物件,得到樹上的節點物件,通過節點物件訪問(操作)到xml文件的內容。

document物件代表了乙個完整的xml文件,通過document物件,可以得到其下面的其他節點物件,通過各個節點物件來訪問xml文件的內容。其中主要包括:標籤節點,屬性節點,文字節點和注釋節點;並且各類節點也被封裝成對應的物件,通過操作不同的物件來訪問xml的內容:樹只有乙個根標籤,樹上的分支叫做節點(node)

讀取xml檔案

首先建立xml解析器物件,獲取到document物件:

public static document getdocument() catch (documentexception e)

return null;

iterator  element.nodeiterator();  //獲取當前標籤節點下的所有子節點

標籤:element document.getrootelement();  //獲取xml文件的根標籤 

element element.element("標籤名") //指定名稱的第乙個子標籤

iteratorelement.elementiterator("標籤名");// 指定名稱的所有子標籤

listelement.elements(); //獲取所有子標籤

屬性:string   element.attributevalue("屬性名") //獲取指定名稱的屬性值

attribute    element.attribute("屬性名");//獲取指定名稱的屬性物件      

attribute.getname()  //獲取屬性名稱

attibute.getvalue()  //獲取屬性值

listelement.attributes();  //獲取所有屬性物件

iteratorelement.attibuteiterator(); //獲取所有屬性物件

文字:element.gettext();  //獲取當前標籤的文字

element.elementtext("標籤名") //獲取當前標籤的指定名稱的子標籤的文字內容

增加:documenthelper.createdocument() 增加文件

addelement("名稱") 增加標籤

addattribute("名稱",「值」) 增加屬性

修改:attribute.setvalue("值") 修改屬性值

element.addatribute("同名的屬性名","值") 修改同名的屬性值

element.settext("內容") 修改文字內容

刪除:element.detach(); 刪除標籤

attribute.detach(); 刪除屬性

寫出內容到xml文件

xmlwriter writer = new xmlwriter(outputstream, outputforamt)

wirter.write(document);

XML解析之DOM解析

一開始我也不會,就找資料,這種資料多的要命,一搜一大堆,眼花繚亂的,沒看到滿意的。反正要掌握的,何不多寫寫,別人寫的大多數是針對某個xml進行解析的,我不喜歡這樣,太麻煩。以下 基本上可以解析平常xml格式的內容了,不需要怎麼改動 首先獲取dom解析最重要的工廠類,通過工廠類獲取解析xml用到的物件...

解析xml檔案(DOM解析)

解析的檔案 醫院心電圖記錄單 門診號 1002080066 住院號 201800964 姓名 羅2 性別 女 年齡 26歲 心檢號 科室 婦產科 床號 9 複查時註明原心檢號 韻律 竇律 心房率 82 心室率 82 軸向 電軸正常 pr間期 0.13 qrs波 0.08 qt間期 0.34 正常心電...

Dom方式解析Xml

初學dom解析xml dom方式解析xml檔案 1.遍歷所有節點 2.查詢某乙個節點 3.刪除節點 4.更新結點 5.新增節點 使用dom方式對xml文件進行crud public class demo3 得到xml文件中所有標籤 test public void read2 throws exce...