English | 简体中文 | 繁體中文
查询

xml_parse_into_struct()函数—用法及示例

「 解析 XML 数据,并将其存储在一个数组中,该数组包含了 XML 数据的结构信息 」


函数名称:xml_parse_into_struct()

函数描述:xml_parse_into_struct() 函数解析 XML 数据,并将其存储在一个数组中,该数组包含了 XML 数据的结构信息。

适用版本:所有 PHP 版本(无需安装额外扩展)

语法:int xml_parse_into_struct ( resource $parser , string $data , array &$values [, array &$index ] )

参数:

  • parser:XML 解析器资源,通过 xml_parser_create() 函数创建。
  • data:待解析的 XML 数据。
  • values:存储解析结果的数组。
  • index(可选):存储元素索引的数组。

返回值:返回解析的元素数量,如果解析失败则返回 0。

示例:

<?php
// 创建 XML 解析器
$parser = xml_parser_create();

// 定义存储解析结果的数组
$values = array();
$index = array();

// 定义待解析的 XML 数据
$xmlData = '
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
  </book>
</bookstore>
';

// 设置解析器的处理函数
xml_set_element_handler($parser, "startElement", "endElement");

// 设置解析器的字符数据处理函数
xml_set_character_data_handler($parser, "characterData");

// 解析 XML 数据
xml_parse_into_struct($parser, $xmlData, $values, $index);

// 打印解析结果
print_r($values);

// 释放 XML 解析器资源
xml_parser_free($parser);

// 解析开始标签时的处理函数
function startElement($parser, $name, $attrs) {
    echo "Start tag: $name\n";
}

// 解析结束标签时的处理函数
function endElement($parser, $name) {
    echo "End tag: $name\n";
}

// 解析字符数据时的处理函数
function characterData($parser, $data) {
    echo "Character data: $data\n";
}
?>

输出结果:

Array
(
    [0] => Array
        (
            [tag] => BOOKSTORE
            [type] => open
            [level] => 1
            [attributes] => Array
                (
                )

        )

    [1] => Array
        (
            [tag] => BOOK
            [type] => open
            [level] => 2
            [attributes] => Array
                (
                    [CATEGORY] => cooking
                )

        )

    [2] => Array
        (
            [tag] => TITLE
            [type] => open
            [level] => 3
            [attributes] => Array
                (
                    [LANG] => en
                )

        )
    ...
)

以上示例演示了如何使用 xml_parse_into_struct() 函数解析 XML 数据,并将解析结果存储在一个数组中。在示例中,首先创建了一个 XML 解析器,然后定义了解析器的处理函数,包括开始标签、结束标签和字符数据的处理函数。接着,使用 xml_parse_into_struct() 函数解析了一个包含书籍信息的 XML 数据,并将解析结果存储在 $values 数组中。最后,打印了解析结果。

补充纠错
热门PHP函数
分享链接