📜  PHP | simplexml_load_string()函数(1)

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

PHP | simplexml_load_string()函数

简介

simplexml_load_string() 是 PHP 中的一个函数,它用于将 XML 字符串转换为 SimpleXMLElement 对象。这个函数返回一个 SimpleXMLElement 对象,该对象表示了 XML 字符串所代表的 XML 文档结构。

语法
simplexml_load_string(string $data, string $class_name = "SimpleXMLElement", int $options = 0, string $ns = "", bool $is_prefix = false) : SimpleXMLElement | false
参数
  1. $data:需要解析的 XML 字符串。
  2. $class_name:可选参数,用于指定 SimpleXMLElement 对象的类名。
  3. $options:可选参数,可以指定其他解析选项。目前支持以下选项:
    • LIBXML_NOCDATA:将 CDATA 解析为普通文本内容。
    • LIBXML_NOBLANKS:去除空白节点。
    • LIBXML_COMPACT:压缩 XML 内容,移除空白与注释。
    • LIBXML_PARSEHUGE:支持超大文档,不适用于 32 位操作系统。
  4. $ns:可选参数,指定 XML 命名空间。
  5. $is_prefix:可选参数,是否在元素名前添加 XML 命名空间前缀。
返回值

如果解析成功,函数将返回一个 SimpleXMLElement 对象,否则返回 false。

示例
$xml_string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="1">
        <title>PHP in Action</title>
        <author>Steven Holzner</author>
        <publisher>Manning Publications</publisher>
    </book>
    <book id="2">
        <title>Learning PHP 7</title>
        <author>David Sklar</author>
        <publisher>O'Reilly Media</publisher>
    </book>
</books>
XML;

$xml_object = simplexml_load_string($xml_string);

// 打印 SimpleXMLElement 对象
print_r($xml_object);

// 遍历 SimpleXMLElement 对象
foreach ($xml_object as $book) {
    echo $book->title . " - " . $book->author . " - " . $book->publisher . PHP_EOL;   
}

输出结果:

SimpleXMLElement Object
(
    [book] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [id] => 1
                        )

                    [title] => PHP in Action
                    [author] => Steven Holzner
                    [publisher] => Manning Publications
                )

            [1] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [id] => 2
                        )

                    [title] => Learning PHP 7
                    [author] => David Sklar
                    [publisher] => O'Reilly Media
                )

        )

)
PHP in Action - Steven Holzner - Manning Publications
Learning PHP 7 - David Sklar - O'Reilly Media
注意事项
  1. XML 字符串必须符合 XML 规范。
  2. SimpleXMLElement 对象的属性使用“@”符号,如 $book["@attributes"]["id"]
  3. SimpleXMLElement 对象的属性是有类型的,可以通过 (string)$book->title 显式转换为字符串。
  4. SimpleXMLElement 对象的属性可以通过数组的方式访问,如 $xml_object->book[0]->title
  5. SimpleXMLElement 对象的属性可以通过 foreach 循环遍历,如上面的示例代码。