萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> 用PHP讀取和編寫XML DOM

用PHP讀取和編寫XML DOM

   有許多技術可用於用 PHP 讀取和編寫 XML。本文提供了三種方法讀取 XML:使用 DOM 庫、使用 SAX 解析器和使用正則表達式。還介紹了使用 DOM 和 PHP 文本模板編寫 XML。

  用 PHP 讀取和編寫可擴展標記語言(XML)看起來可能有點恐怖。實際上,XML 和它的所有相關技術可能是恐怖的,但是用 PHP 讀取和編寫 XML 不一定是項恐怖的任務。首先,需要學習一點關於 XML 的知識 —— 它是什麼,用它做什麼。然後,需要學習如何用 PHP 讀取和編寫 XML,而有許多種方式可以做這件事。

  本文提供了 XML 的簡短入門,然後解釋如何用 PHP 讀取和編寫 XML。

  什麼是 XML?

  XML 是一種數據存儲格式。它沒有定義保存什麼數據,也沒有定義數據的格式。XML 只是定義了標記和這些標記的屬性。格式良好的 XML 標記看起來像這樣:

  Jack Herrington

  這個 標記包含一些文本:Jack Herrington。

  不包含文本的 XML 標記看起來像這樣:

  用 XML 對某件事進行編寫的方式不止一種。例如,這個標記形成的輸出與前一個標記相同:

  也可以向 XML 標記添加屬性。例如,這個 標記包含 first 和 last 屬性:

  也可以用 XML 對特殊字符進行編碼。例如,& 符號可以像這樣編碼:

  &

  包含標記和屬性的 XML 文件如果像示例一樣格式化,就是格式良好的,這意味著標記是對稱的,字符的編碼正確。清單 1 是一份格式良好的 XML 的示例。

  清單 1. XML 圖書列表示例

  Jack Herrington

  O'Reilly

  Jack Herrington

  O'Reilly

  清單 1 中的 XML 包含一個圖書列表。父標記 包含一組 標記,每個 標記又包含 、

  O'Reilly

  Jack Herrington

  O'Reilly

  %

  使用 DOM 的真正價值在於它創建的 XML 總是格式正確的。但是如果不能用 DOM 創建 XML 時該怎麼辦?

  用 PHP 編寫 XML

  如果 DOM 不可用,可以用 PHP 的文本模板編寫 XML。清單 7 顯示了 PHP 如何構建圖書 XML 文件。

  清單 7. 用 PHP 編寫圖書 XML

  $books = array();

  $books [] = array(

  'title' => 'PHP Hacks',

  'author' => 'Jack Herrington',

  'publisher' => "O'Reilly"

  );

  $books [] = array(

  'title' => 'Podcasting Hacks',

  'author' => 'Jack Herrington',

  'publisher' => "O'Reilly"

  );

  ?>

  foreach( $books as $book )

  {

  ?>

  }

  ?>

  腳本的頂部與 DOM 腳本類似。腳本的底部打開 books 標記,然後在每個圖書中迭代,創建 book 標記和所有的內部 title、author 和 publisher 標記。

  這種方法的問題是對實體進行編碼。為了確保實體編碼正確,必須在每個項目上調用 htmlentities 函數,如清單 8 所示。

  清單 8. 使用 htmlentities 函數對實體編碼

  foreach( $books as $book )

  {

  $title = htmlentities( $book['title'], ENT_QUOTES );

  $author = htmlentities( $book['author'], ENT_QUOTES );

  $publisher = htmlentities( $book['publisher'], ENT_QUOTES );

  ?>

  }

  ?>

  這就是用基本的 PHP 編寫 XML 的煩人之處。您以為自己創建了完美的 XML,但是在試圖使用數據的時候,馬上就會發現某些元素的編碼不正確。

  結束語

  XML 周圍總有許多誇大之處和混淆之處。但是,並不像您想像的那麼難 —— 特別是在 PHP 這樣優秀的語言中。在理解並正確地實現了 XML 之後,就會發現有許多強大的工具可以使用。XPath 和 XSLT 就是這樣兩個值得研究的工具。

copyright © 萬盛學電腦網 all rights reserved