SimpleXML

介紹

  • SimpleXML 是一個 PHP 庫,它提供了一種處理 XML 文件的簡便方法(尤其是讀取和迭代 XML 資料)。

  • 唯一的限制是 XML 文件必須格式良好。

使用過程方法解析 XML

// Load an XML string
$xmlstr = file_get_contents('library.xml');
$library = simplexml_load_string($xmlstr);

// Load an XML file
$library = simplexml_load_file('library.xml');

// You can load a local file path or a valid URL (if allow_url_fopen is set to "On" in php.ini

使用 OOP 方法解析 XML

// $isPathToFile: it informs the constructor that the 1st argument represents the path to a file,
// rather than a string that contains 1the XML data itself.

// Load an XML string
$xmlstr = file_get_contents('library.xml');
$library = new SimpleXMLElement($xmlstr);

// Load an XML file
$library = new SimpleXMLElement('library.xml', NULL, true);

// $isPathToFile: it informs the constructor that the first argument represents the path to a file, rather than a string that contains 1the XML data itself.

訪問兒童和屬性

  • 當 SimpleXML 解析 XML 文件時,它會將其所有 XML 元素或節點轉換為生成的 SimpleXMLElement 物件的屬性
  • 此外,它還將 XML 屬性轉換為可從其所屬的屬性訪問的關聯陣列。

當你知道他們的名字時:

$library = new SimpleXMLElement('library.xml', NULL, true);
foreach ($library->book as $book){
    echo $book['isbn'];
    echo $book->title;
    echo $book->author;
    echo $book->publisher;
}
  • 這種方法的主要缺點是必須知道 XML 文件中每個元素和屬性的名稱。

當你不知道他們的名字(或你不想知道他們)時:

foreach ($library->children() as $child){
    echo $child->getName();
    // Get attributes of this element
    foreach ($child->attributes() as $attr){
        echo ' ' . $attr->getName() . ': ' . $attr;
    }
    // Get children
    foreach ($child->children() as $subchild){
        echo ' ' . $subchild->getName() . ': ' . $subchild;
    }
}