使用simplexmlphp提供了一种名为simplexml的解析器,可以将xml数据转换为php对象。通过将对象强制转换为数组,即可将xml数据转化为php中的数组。
<?php
$xml = <<<xml
<?xml version='1.0'?>
<books>
<book>
<name>php programming</name> <author>john smith</author> <price>15.00</price>
</book>
<book>
<name>web development</name> <author>jane doe</author> <price>20.00</price>
</book>
</books>
xml;
$data = simplexml_load_string($xml);
$array = json_decode(json_encode($data), true);
print_r($array);
?>
上面的代码首先使用了xml heredoc(
foreach ($books as $book) {
$item = array(
name => $book->getelementsbytagname(name)->item(0)->nodevalue, author => $book->getelementsbytagname(author)->item(0)->nodevalue, price => $book->getelementsbytagname(price)->item(0)->nodevalue
);
array_push($result, $item);
}
print_r($result);
?>
我们首先使用loadxml()方法创建一个domdocument对象,然后通过getelementsbytagname()方法获取到所有的book节点,并对每一个book节点进行遍历,将其name,author和price节点的值存储到php数组$result中。
使用xmlreader当处理大型xml文件时,dom的内存消耗可能会过高,因此我们可以采用xmlreader解析器,它可以在不大量使用内存的情况下读取xml文档,并将其转换为php数组。
<?php
$xml = <<<xml
<?xml version='1.0'?>
<books>
<book>
<name>php programming</name> <author>john smith</author> <price>15.00</price>
</book>
<book>
<name>web development</name> <author>jane doe</author> <price>20.00</price>
</book>
</books>
xml;
$data = array();
$reader = new xmlreader();
$reader->xml($xml);
while ($reader->read()) {
if ($reader->nodetype == xmlreader::element && $reader->name == 'book') {
$book = array(); while ($reader->read()) { if ($reader->nodetype == xmlreader::element) { $name = $reader->name; $reader->read(); $book[$name] = $reader->value; } elseif ($reader->nodetype == xmlreader::end_element && $reader->name == 'book') { array_push($data, $book); break; } }
}
}
print_r($data);
?>
我们使用xmlreader对象的xml()方法将xml数据读入到其中,并使用while循环迭代读取每一个book节点,将其子节点的值存储到php数组$data中。
以上就是使用三种方法将xml数据转换为php数组的具体代码和步骤。当我们需要处理xml数据时,可以选择使用不同的解析器工具来适应不同的需求和性能要求。
以上就是php怎么转xml为数组的详细内容。