PHP中的XML处理:解析与创建XML文档完全指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP中的XML处理:从简单解析到创建复杂文档



XML(可扩展标记语言)仍然是数据交换、配置文件以及Web服务(SOAP、RSS/Atom)的关键格式之一。PHP提供了几个强大的内置扩展用于处理XML,能够解决几乎任何任务——从解析简单的RSS源到生成带有命名空间的复杂文档。在本文中,我们将介绍主要工具:SimpleXML、DOMDocument和XMLReader,并学习如何动态创建XML文档。



1. SimpleXML — 快速便捷的解析



SimpleXML是最简单的XML处理扩展。它将XML文档转换为一个对象,其属性可以像普通数组和对象一样读取。非常适合中小型文档,当不需要复杂导航时。



从字符串或文件加载XML



<?php// 从字符串$xmlString = '<book><title>PHP入门</title><author>伊万·彼得罗夫</author></book>';$book = simplexml_load_string($xmlString);

// 从文件$books = simplexml_load_file('books.xml');

echo $book->title; // PHP入门echo $book->author; // 伊万·彼得罗夫?>


处理属性和多个元素



<?php$xml = '<library>    <book id="1">        <title>PHP Objects</title>        <author>Matt Zandstra</author>    </book>    <book id="2">        <title>Clean Code</title>        <author>Robert C. Martin</author>    </book></library>';

$library = simplexml_load_string($xml);

foreach ($library->book as $book) { echo 'ID: ' . $book['id'] . ' — ' . $book->title . ' (' . $book->author . ')<br>';}// ID: 1 — PHP Objects (Matt Zandstra)// ID: 2 — Clean Code (Robert C. Martin)?>


重要提示: SimpleXML不支持带有条件的复杂XPath查询(仅支持简单路径)。对于更强大的查询,请使用DOMDocument或XPath。



2. DOMDocument — 对XML的完全控制



DOMDocument实现了W3C DOM API,并提供了对文档结构的完全控制。您可以添加、删除、修改任何节点,处理命名空间,并执行任意复杂度的XPath查询。这是专业任务的选择。



使用DOMDocument进行解析和导航



<?php$dom = new DOMDocument();$dom->load('books.xml');

// 获取所有<book>元素$books = $dom->getElementsByTagName('book');

foreach ($books as $book) { $title = $book->getElementsByTagName('title')->item(0)->nodeValue; $author = $book->getElementsByTagName('author')->item(0)->nodeValue; echo "书籍:$title, 作者:$author<br>";}?>


XPath — 对XML的强大查询



<?php$dom = new DOMDocument();$dom->load('library.xml');$xpath = new DOMXPath($dom);

// 查找所有价格 > 500 的书籍$expensiveBooks = $xpath->query('//book[price > 500]');

foreach ($expensiveBooks as $book) { echo $book->getElementsByTagName('title')->item(0)->nodeValue . ' — ' . $book->getElementsByTagName('price')->item(0)->nodeValue . ' 卢布<br>';}?>


3. 创建XML文档



PHP不仅可以读取,还可以创建XML文档。我们来介绍两种方法。



通过SimpleXML创建XML



<?php$xml = new SimpleXMLElement('<catalog></catalog>');

$product = $xml->addChild('product');$product->addChild('name', '笔记本电脑');$product->addChild('price', 75000);$product->addAttribute('id', '12

推荐