最常見的xml資料型別有:element, attribute,comment, text.
element, 指形如tom的節點。它可以包括:element, text, comment, processinginstruction, cdata, and entityreference.
attribute, 指在中的粗體部分。
comment,指形如: 的節點。
text,指在tom的粗體部分。
在xml中,可以用xmlnode物件來參照各種xml資料型別。
2.1 查詢已知絕對路徑的節點(集)
objnodelist = objdoc.selectnodes(「company/department/employees/employee」)
或者objnodelist = objnode.selectnodes(「/company/department/employees/employee」)
以上兩種方法可返回乙個nodelist物件,如果要返回單個節點可使用selectsinglenode方法,該方法如果查詢到乙個或多個節點,返回第乙個節點;如果沒有查詢的任何節點返回 nothing。例如:
objnode = objnode.selectsinglenode(「/company/department/employees/employee」)
if not (objnode is nothing) then
『- do process
end if
2.2 查詢已知相對路徑的節點(集)
可使用類似於檔案路徑的相對路徑的方式來查詢xml的資料
objnode = objdoc.selectsinglenode(「company/department」)
objnodelist = objnode.selectnodes(「../department)
objnode = objnode.selectnode(「employees/employee」)
2.3 查詢已知元素名的節點(集)
在使用不規則的層次文件時,由於不知道中間層次的元素名,可使用//符號來越過中間的節點,查詢其子,孫或多層次下的其他所有元素。例如:
objnodelist = objdoc.selectnodes(「company//employee」)
2.4 查詢屬性(attribute)節點
以上的各種方法都返回元素(element)節點(集),返回屬性(attribute),只需要採用相應的方法,在屬性名前加乙個@符號即可,例如:
objnodelist = objdoc.selectnodes(「company/department/employees/employee/@id」)
objnodelist = objdoc.selectnodes(「company//@id」)
2.5 查詢text節點
使用text()來獲取text節點。
objnode = objdoc.selectsinglenode(「company/department/deparmt_name/text()」)
2.6 查詢特定條件的節點
使用符號來查詢特定條件的節點。例如:
a. 返回id號為 10102的employee節點
objnode = objdoc.selectsinglenode(「company/department/employees/employee[@id=』10102』]」)
b. 返回name為zhang qi的name 節點
objnode = objdoc.selectsinglenode(「company/department/employees/employee/name[text()=』zhang qi』]」)
c. 返回部門含有職員22345的部門名稱節點
objnode = objdoc.selectsinglenode("company/department[employees/employee/@id='22345']/department_name")
2.7 查詢多重模式的節點
使用 | 符號可以獲得多重模式的節點。例如:
objnodelist = objdoc.selectnodes(「company/department/department_name | company/department/manager」)
2.8 查詢任意子節點
使用*符號可以返回當前節點的所有子節點。
objnodelist = objdoc.selectnodes(「company/*/manager)
或者objnodelist = objnode.childnodes
3 xml資料的編輯
3.1 增加乙個元素的屬性(attribute)節點
dim objnodeattr as xmlnode
objnodeattr = objdoc.createattribute("id", nothing)
objnodeattr.innerxml = "101"
3.2 刪除乙個元素的屬性
objnode.attributes.remove(objnodeattr)
3.3 增加乙個子元素(element)
dim objnodechild as xmlnode
objnodechild = objdoc.createelement(nothing, "id", nothing)
objnodechild.innerxml = "101"
3.4 刪除乙個子元素
objnode.removechild(objnodechild)
3.5 替換乙個子元素
objnode.replacechild(newchild,oldchild)
4 參考資料
<?xml version="1.0" encoding="utf-8"?>
cai wubu
zhang bin
12345
zhang bin
male
10101
zhang qi
female
10102
zhang xia
male
10201
zhangchuang
male
10202
zhang jun
male
kaifa bu
wang bin
22345
wang bin
male
20101
wang qi
female
20102
wang xia
male
20201
wang chuang
male
20201
wang jun
male
python解析xml的方法總結
使用python開發時,由於python的開源生態圈非常的給力,對於實現同乙個功能,往往在這方面的類庫非常多,而開發者也同樣面臨著如何選擇最佳的 類庫作為輔助開發的工具。本文將記錄本人在使用python處理xml格式資料時測試過的類庫,有些類庫由於先天不足,無法支援一些特性,涉及的類庫或模 塊有xm...
SAX讀取xml檔案的方法總結
xml檔案的讀取有多種方法,每種方法採用不同的操作來讀取xml檔案。本次將的是sax的方法讀取xml檔案。原理 sax對xml檔案的讀取是採用事件機制的,當某事件發生時,就會自動的觸發定義好的事件處理方法。在一定程度上與訊息機制是相似的。這也是為什麼我們要寫事件處理類 handler類 的原因。基本...
XML的個人習慣解析方法總結
xml檔案的解析方法 xmlparse.cpp 定義控制台應用程式的入口點。include stdafx.h include include 正規表示式的標頭檔案 include tinyxml.h 包含tinyxml類庫 using namespace std import msxml6.dll ...