用PHP讀取和編寫可擴展標記語言(XML)看起來可能有點恐怖。實際上,XML 和它的所有相關技術可能是恐怖的,但是用PHP讀取和編寫XML不一定是項恐怖的任務。首先,需要學習一點關於XML的知識:它是什麼,用它做什麼。然後,需要學習如何用PHP讀取和編寫XML,而有許多種方式可以做這件事。
什麼是XML?
XML是一種數據存儲格式。它沒有定義保存什麼數據,也沒有定義數據的格式。XML只是定義了標記和這些標記的屬性。格式良好的XML標記看起來像這樣:
- <name>This test for php100</name>
這個<name>標記包含一些文本:Jack Herrington。不包含文本的 XML 標記看起來像這樣:
- <powerUp />
用 XML 對某件事進行編寫的方式不止一種。例如,這個標記形成的輸出與前一個標記相同:
- <powerUp></powerUp>
也可以向 XML 標記添加屬性。例如,這個 <name> 標記包含 first 和 last 屬性:
- <name first="Jack" last="Herrington" />
也可以用 XML 對特殊字符進行編碼。例如,& 符號可以像這樣編碼:
- &
包含標記和屬性的 XML 文件如果像示例一樣格式化,就是格式良好的,這意味著標記是對稱的,字符的編碼正確。清單 1 是一份格式良好的 XML 的示例。
清單 1. XML圖書列表示例
- <books>
- <book>
- <author>Jack Herrington</author>
- <title>PHP Hacks</title>
- <publisher>OReilly</publisher>
- </book>
- <book>
- <author>Jack Herrington</author>
- <title>Podcasting Hacks</title>
- <publisher>OReilly</publisher>
- </book>
- </books>
清單 1 中的 XML 包含一個圖書列表。父標記 <books> 包含一組 <book> 標記,每個 <book> 標記又包含 <author>、<title> 和 <publisher> 標記。當 XML 文檔的標記結構和內容得到外部模式文件的驗證後,XML 文檔就是正確的。模式文件可以用不同的格式指定。對於本文來說,所需要的只是格式良好的 XML。
如果覺得 XML 看起來很像超文本標記語言(HTML),那麼就對了。XML 和 HTML 都是基於標記的語言,它們有許多相似之處。但是,要著重指出的是:雖然 XML 文檔可能是格式良好的 HTML,但不是所有的 HTML 文檔都是格式良好的 XML。換行標記(br)是 XML 和 HTML 之間區別的一個好例子。這個換行標記是格式良好的 HTML,但不是格式良好的 XML:
- <p>This is a paragraph<br>
- With a line break</p>
這個換行標記是格式良好的 XML 和 HTML:
- <p>This is a paragraph<br />
- With a line break</p>
如果要把 HTML 編寫成同樣是格式良好的 XML,請遵循 W3C 委員會的可擴展超文本標記語言(XHTML)標准(參見 參考資料)。所有現代的浏覽器都能呈現 XHTML。而且,還可以用 XML 工具讀取 XHTML 並找出文檔中的數據,這比解析 HTML 容易得多。