📜  php 解析 xml - PHP (1)

📅  最后修改于: 2023-12-03 15:33:39.342000             🧑  作者: Mango

PHP 解析 XML

在 Web 开发中,XML 是一种常用的数据格式。PHP 具有用于解析 XML 文档的内置函数和类,使得开发人员可以轻松地解析 XML 文档并从中提取数据。

SimpleXML

在 PHP 中,最简单的解析 XML 文档的方法是使用 SimpleXML 扩展。这个扩展通过将 XML 文档转换为对象的方式,使得获取和操作 XML 数据非常容易。

每个 XML 元素都是一个对象

SimpleXML 解析 XML 文档时,会将每个 XML 元素都转换为一个对象,使得操作 XML 数据非常容易。

示例代码

$xml = simplexml_load_string('<book><title>PHP Cookbook</title><author>David Sklar</author></book>');
echo $xml->title; // 输出:PHP Cookbook
echo $xml->author; // 输出:David Sklar
遍历 XML 文档

SimpleXML 也允许您遍历整个 XML 文档,以便从中提取所有需要的数据。遍历时,可以使用 foreach 循环和“->”操作符。

示例代码

$xml = simplexml_load_file('books.xml');
foreach ($xml->book as $book) {
    echo $book->title . '<br>';
    echo $book->author . '<br>';
}
查询 XML 数据

SimpleXML 允许您使用 XPath 查询语言,搜索 XML 文档中符合特定条件的数据。

示例代码

$xml = simplexml_load_file('books.xml');
$books = $xml->xpath('//book[author="David Sklar"]');
foreach ($books as $book) {
    echo $book->title . '<br>';
}
DOM 扩展

如果需要更高级的 XML 功能,PHP 还提供了基于 DOM 的扩展。使用 DOM 扩展可以更方便地操作 XML 文档,但相应的代码也更加复杂。

创建 DOM 对象

创建 DOM 对象时,需要使用 new DOMDocument() 函数。

示例代码

$doc = new DOMDocument();
$doc->load('books.xml');
获取 XML 数据

使用 DOM 扩展获取 XML 数据相对比较复杂,需要使用一些 DOM 操作函数。

示例代码

$doc = new DOMDocument();
$doc->load('books.xml');
$books = $doc->getElementsByTagName('book');
foreach ($books as $book) {
    $titles = $book->getElementsByTagName('title');
    $title = $titles->item(0)->nodeValue;
    $authors = $book->getElementsByTagName('author');
    $author = $authors->item(0)->nodeValue;
    echo $title . '<br>';
    echo $author . '<br>';
}
修改 XML 数据

使用 DOM 扩展可以轻松地修改 XML 数据。例如,可以使用 createElement()appendChild() 函数创建新的 XML 元素,并使用 setAttribute() 函数设置元素属性。

示例代码

$doc = new DOMDocument();
$doc->load('books.xml');
$books = $doc->getElementsByTagName('book');
foreach ($books as $book) {
    $prices = $book->getElementsByTagName('price');
    $price = $prices->item(0)->nodeValue;
    $discount = $doc->createElement('discount', $price * 0.9);
    $book->appendChild($discount);
    $discount->setAttribute('percent', '10%');
}
$doc->save('books.xml');
结论

PHP 提供了 SimpleXML 和 DOM 扩展,使得开发人员可以轻松地解析和操作 XML 数据。在使用 SimpleXML 扩展时,开发人员只需要将 XML 文档转换为对象,即可轻松地获取和操作 XML 数据。在使用 DOM 扩展时,开发人员可以更精确地控制 XML 数据,但相应的代码也更加复杂。