自动将整个XML文档解析为PHP变量

时间:2010-12-30 16:52:19

标签: php xml parsing

嘿,基本上有一个庞大的XML文档,有很多节点n个属性值和所有爵士乐。

我想非常懒,因为我对XML / PHP很糟糕,谷歌似乎在这个场合让我失望。

是否可以获取XML文档中的每个元素并使其成为PHP变量?

因此,如果我的XML Doc可能就像......

<wrap>
 <sub></sub>
  <subsub></subsub>
 <sub></sub>
  <subsub></subsub>
 <sub2></sub2>
 <sub3 value=''></sub3>
 <sub4 value=''></sub4>
</wrap>

因此无论标签/节点的名称是什么,它都会以递归方式检查将其全部转换为php变量的文档。所以例如他们最终看起来可能。 $包; $子1; $子[2]; $ SUB2; $ SUB3; $ SUB4; $ SUB3 [ '值']; $ SUB4 [ '值'];

所以我很聪明地深入研究可能就像8个孩子一样?

这是可能的还是我必须打出类似的 $ sub1 = $ xml-&gt; wrap-&gt; sub 1;因为那就像...超过1k行代码,我不想存在大声笑。

只是让xml Feed为HERE

感谢您的时间:)

3 个答案:

答案 0 :(得分:1)

   $xml = simplexml_load_string($response);
// $response is your xml file/output string

然后你可以像这样引用$ xml对象中的元素

$xml->children('yourschema')->children('yoururn')->Tag1->Tag2

答案 1 :(得分:0)

您建议的方法确实没有意义,因为您最终会得到一些与原始XML一样复杂的东西,并且需要尽可能多地解析。因此,使用DOM parserSimpleXML可能是一种理智的方式。

那就是说,我怀疑像xpath(DOMSimpleXML)这样的东西也可能会有所帮助,如果你只是试图提取某些信息并且不太关心XML的大部分内容

答案 2 :(得分:0)

将xml数据加载到simpleXML元素后,您可以轻松地访问它。例如:

$xml = new SimpleXMLElement($input_xml_string);
foreach($xml->sub as $value) {
   echo $value->subsub;
}

虽然小心sub,因为它是一个保留字。您可能需要将其包含在括号$ xml-&gt; {sub}

阅读http://www.php.net/manual/en/simplexml.examples-basic.php

您必须使用DOM对象来执行更复杂的操作,例如删除子项。