从xml文件中获取节点内容并将其转换为php数组?

时间:2010-04-18 11:45:00

标签: php arrays xmlstarlet

我正在寻找从大型xml文件中提取某些节点的解决方案(使用 xmlstarlet http://xmlstar.sourceforge.net/),然后将此节点解析为 php array 。< / p>

elements.xml

<?xml version="1.0"?>
<elements>
  <element id="1" par1="val1_1" par2="val1_2" par3="val1_3">
    <title>element 1 title</title>
    <description>element 1 description</description>
  </element>
  <element id="2" par1="val2_1" par2="val2_2" par3="val2_3">
    <title>element 2 title</title>
    <description>element 2 description</description>
  </element>
</elements>

使用 xmlstarlet 提取id =“1”的元素标记我正在执行此shell命令...

xmlstarlet sel -t -c "/elements/element[id=1]" elements.xml

这个shell命令输出类似的东西......

<element id="1" par1="val1_1" par2="val1_2" par3="val1_3">
  <title>element 1 title</title>
  <description>element 1 description</description>
</element>

我如何将此shell输出解析为 php array

谢谢。


我发现http://php.net/manual/en/function.simplexml-load-string.php非常有用。这个SimpleXML函数将提取的XML片段转换为SimpleXML对象。

1 个答案:

答案 0 :(得分:1)

您可以随时使用新输出的xml并使用simplexml,如:

$data = '<element id="1" par1="val1_1" par2="val1_2" par3="val1_3">
<title>element 1 title</title>
<description>element 1 description</description>
</element>';


$xml = simplexml_load_string($data);
echo $xml->title; //access title
echo $element_ID = $xml->attributes()->id; //access elements attributes by name

现在$xml是您需要的数组