在PHP中处理XML数据是一项常见任务,尤其是当我们需要将接口返回的XML内容展示到网页上时。借助SimpleXML扩展和XPath表达式,我们可以高效地解析并提取目标数据,再将其渲染为HTML表格。

准备XML数据
假设我们有一个包含图书信息的XML字符串,结构如下:
<?xml version="1.0" encoding="UTF-8"?>
<library>
<book>
<title>PHP入门</title>
<author>张三</author>
<price>39.9</price>
</book>
<book>
<title>XML进阶</title>
<author>李四</author>
<price>49.9</price>
</book>
</library>
使用SimpleXML加载XML
通过 simplexml_load_string() 函数可将XML字符串转为SimpleXMLElement对象。若数据来自文件,可使用 simplexml_load_file()。
用XPath提取节点
XPath能快速定位到所有 book 节点。以下代码演示加载与查询过程:
<?php
$xmlString = '<?xml version="1.0" encoding="UTF-8"?>
<library>
<book><title>PHP入门</title><author>张三</author><price>39.9</price></book>
<book><title>XML进阶</title><author>李四</author><price>49.9</price></book>
</library>';
// 加载XML
$xml = simplexml_load_string($xmlString);
if ($xml === false) {
die('XML解析失败');
}
// 使用XPath获取所有book节点
$books = $xml->xpath('/library/book');
?>
渲染为HTML表格
拿到节点数组后,使用PHP循环输出 <table> 标签即可。完整示例如下:
<?php
echo '<table border="1" cellpadding="5">';
echo '<tr><th>书名</th><th>作者</th><th>价格</th></tr>';
foreach ($books as $book) {
echo '<tr>';
echo '<td>' . htmlspecialchars((string)$book->title) . '</td>';
echo '<td>' . htmlspecialchars((string)$book->author) . '</td>';
echo '<td>' . htmlspecialchars((string)$book->price) . '</td>';
echo '</tr>';
}
echo '</table>';
?>
注意事项
- 使用
htmlspecialchars()防止XML中的特殊字符破坏HTML结构。 - XPath路径区分大小写,需与XML标签名完全一致。
- 若XML含有命名空间,应使用
->children()指定空间后再查询。
通过上述方式,我们便能轻松地用PHP SimpleXML与XPath解析XML,并渲染为用户友好的HTML表格。