StackDoc

人人IT網-StackDoc

當前位置: 主頁 > 編程語言 > XML >

POCO::XML(二) 簡單讀XML文檔

時間:2012-06-29 12:56來源:Internet 作者:Internet 點擊:
先來看一下在Poco中XML各元素被抽象成什麼關系: 可以看到,任何元素都被抽象成Node,同時又分为三種類型的節點。(Attr和Notation看成一種) 第一種類型:CharacterData

先來看一下在Poco中XML各元素被抽象成什麼關系:


可以看到,任何元素都被抽象成Node,同時又分为三種類型的節點。(Attr和Notation看成一種)

第一種類型:CharacterData,這類Node是Name不可變,而Value可以由用戶自定義。

第二種類型:AbstractContainerNode,這類Node有個特點,即含有屬性,特別的對於Element節點,Name可以由用戶自定義,而Value不可變。

第三種類型:右邊兩個,它們既可以改變Name,也可以改變Value。

下面是sample.xml文本:

對於上面這一份XML數據,有下面一份代碼執行操作:

可以看出,節點的Name和Value同節點屬性的Name和Value取得方法是同样的,都是用nodeName()和nodeValue()。

看一下顯示結果:


在把數據拿過來看看:

可以看出,程序雖是我們寫的,可是具體的遍曆行为卻是Poco自己定義的。首先明確,有#的全都是系統的const string,也就體現了Name不可變。

Poco先發現Document類型,把它的Name打印出:#Document,再打印出它的Value,由於在源碼中,其值为空字符串,所以什麼也沒有。

Poco再發現Comment類型,把它的Name打印出:#Comment,由於Comment的值是可以由用戶自定義的,所以存在並顯示出“This is a comment”。

Poco再發現Element類型,把它的Name打印出:zhong,由於element的Name是由用戶定義的,所以存在,然而,它沒有值,只可能有屬性。

Poco再發現Text類型,把它的Name打印出:#Text,這個text是element zhong 的,它不可以指定Name,但可以指定Value,這裏沒有Value,所以沒有什麼出現。

Poco再發現Attr類型,這說明判斷屬性的循環進去了,把它的Name打印出:long ,再打印Value 5。由於程序語句執行順序,這個屬性是element guo的

Poco再發現Element類型,把它的Name打印出:guo,沒有Value可以打印出。

Poco再發現Text類型,把它的Name打印出:#Text,這個text是element guo的,它不可以指定Name,但可以指定Value,這裏Value是“hahah”。

最後,值得注意一下,我發現父子Element元素之間還有一個Text element,比如上面這份數據,在</guo> 和 </zhong>之間就存在這样一個元素,所以在屏幕上最後會打印Name:#Text,而沒有值。

可以這样設置:

這样,解析後的每個Text元素都有Value了。

還沒有涉及更加复雜的XML操作,因为我在項目中對XML數據格式的要求不太复雜,主要集中在節點屬性這一塊,就這足夠了。

以上分析建立在本人沒有系統的學習過XML知識的前提下。

謝謝觀賞!






From:CSDN
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
欄目列表
推薦內容