PHP simplexml_load_file()函数讲解
简介
simplexml_load_file() 函数是 PHP 内置的一个函数,用于从 XML 文件中读取数据,返回一个 SimpleXMLElement 对象,可方便地读取 XML 数据。
语法
simplexml_load_file(filename, class_name, options, ns, is_prefix)
参数说明:
filename
:必需,表示 XML 文件的路径class_name
:可选,用于指定 SimpleXMLElement 的子类名称options
:可选,用于为 Libxml 库设置一些选项ns
:可选,用于设置命名空间is_prefix
:可选,用于设置命名空间前缀信息
示例
示例1
我们首先准备以下的 XML 文件(test.xml):
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book category="children" cost="12.00">
<title lang="en">Harry Potter</title>
<author>J.K. Rowling</author>
<year>2005</year>
</book>
<book category="web" cost="31.20">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
</book>
</bookstore>
接下来,我们使用 PHP 中的 simplexml_load_file 来解析该 XML 文件:
$xml = simplexml_load_file('test.xml');
// 打印 SimpleXML 对象
print_r($xml);
输出结果:
SimpleXMLElement Object
(
[book] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[category] => children
[cost] => 12.00
)
[title] => SimpleXMLElement Object
(
[@attributes] => Array
(
[lang] => en
)
[0] => Harry Potter
)
[author] => J.K. Rowling
[year] => 2005
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[category] => web
[cost] => 31.20
)
[title] => SimpleXMLElement Object
(
[@attributes] => Array
(
[lang] => en
)
[0] => Learning XML
)
[author] => Erik T. Ray
[year] => 2003
)
)
)
可以看到,解析出的结果是个 SimpleXMLElement 对象。
我们可以通过访问每个节点的属性和内容来获取我们需要的数据:
// 访问属性
echo $xml->book[0]['category']; // children
echo $xml->book[1]['cost']; // 31.20
// 访问内容
echo $xml->book[0]->title; // Harry Potter
echo $xml->book[1]->author; // Erik T. Ray
示例2
在示例1中,我们解析的 XML 文件很简单,只有两个 book 节点。如果我们有一个更复杂的 XML 文件,也可以用 simplexml_load_file 来解析。
我们准备如下的 XML 文件(test2.xml):
<?xml version="1.0" encoding="UTF-8"?>
<lunches>
<lunch>
<name>Meal 1</name>
<description>Chicken and Broccoli Alfredo</description>
<price>6.99</price>
<calories>750</calories>
</lunch>
<lunch>
<name>Meal 2</name>
<description>Beef and Vegetable Stir Fry</description>
<price>5.99</price>
<calories>550</calories>
</lunch>
<lunch>
<name>Meal 3</name>
<description>Shrimp Lo Mein</description>
<price>7.99</price>
<calories>830</calories>
</lunch>
</lunches>
接下来,我们使用 PHP 中的 simplexml_load_file 来解析该 XML 文件,并将解析出的结果打印成 HTML 表格:
$xml = simplexml_load_file('test2.xml');
// 打印 HTML 表格
echo '<table border="1">';
echo '<tr><th>Name</th><th>Description</th><th>Price</th><th>Calories</th></tr>';
foreach ($xml->children() as $lunch) {
echo '<tr>';
echo '<td>' . $lunch->name . '</td>';
echo '<td>' . $lunch->description . '</td>';
echo '<td>' . $lunch->price . '</td>';
echo '<td>' . $lunch->calories . '</td>';
echo '</tr>';
}
echo '</table>';
输出结果:
Name | Description | Price | Calories |
---|---|---|---|
Meal 1 | Chicken and Broccoli Alfredo | 6.99 | 750 |
Meal 2 | Beef and Vegetable Stir Fry | 5.99 | 550 |
Meal 3 | Shrimp Lo Mein | 7.99 | 830 |
这里我们使用了 SimpleXMLElement 对象的 children() 方法来遍历每个 lunch 节点,并输出成 HTML 表格。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP simplexml_load_file()函数讲解 - Python技术站