iT邦幫忙

DAY 19
8

XML系列 第 19

[XML]19-文件結構

  • 分享至 

  • xImage
  •  

說明過了XML的使用、安全、檢視、編輯、轉換和驗證,接著要進入比較細節的部份,本篇的主題是介紹文件的結構。

以上圖所顯示的 XML 來說明,可以發現到除了第一列的 <?xml version="1.0"?> 之外,其他的部份是一個很典型的樹狀結構

其中最上層的,稱為此文件的 Root ,在此例中為 <ipo:purchaseOrder> ,而各元素彼此之間的關係,有 Parent-Child 關係(例如:<ipo:purchaseOrder> 和<shipTo> 、 <Items> 和 <item> 以及 <item> 和 <price> ),也有所謂的Sibling關係(例如: <shipTo> 和 <billTo> )。

若以另一種方式來表達,會類似下圖:

看到這種樹狀結構,對於程式開發人員而言,由於不像 RDBMS 或一般以行列區隔資料的格式。要取得其中的資料,如果使用傳統的文字檔處理方式(例:先 Find 幾個 Keyword,再用 Substring 去切字串),這將會是一件苦差事。

而 XML 提供了很方便而強大的查詢方式,叫做 XPath,你可以把他類比成在查詢 RDBMS 時所使用的 SELECT 指令,如果熟悉使用的話,更可以將 XML 的好處發揮出來。其使用方式也是透過一個現成的工具程式,不用自己寫的工具程式。

基本上 XPath 是以「描述資料所在位置的路徑」的方式來查詢資料,以本文中提的 XML 為例,舉幾個最簡單的例子如下,應該很容易看的懂才是:

XPath : /ipo:purchaseOrder/@orderDate
回傳:2011-09-28

XPath:/ipo:purchaseOrder/shipTo/name
回傳:Helen Zoe

XPath:/ipo:purchaseOrder/Items/item[1]/@partNum
回傳:811-AA

XPath:/ipo:purchaseOrder/Items/item[2]/productName
回傳:Funny Toys

XPath:/ipo:purchaseOrder/Items/item[3]/price
回傳:128.99

以 php 來寫,大概像這樣

$xpath = new DOMXPath($doc);
$arrname = $xpath->query("/ipo:purchaseOrder/shipTo/name"); '傳入 XPath
 
foreach ($arrname as $myname) {
    echo $myname->nodeValue." ";  '回傳值
}

'執行結果就是回傳
'Helen Zoe

本系列文章列表
Next : [XML]20-文件之語法


上一篇
[XML]18-驗證之Schema
下一篇
[XML]20-文件之語法
系列文
XML30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言