【问题标题】:Parse whole XML Document into PHP Variables Automatically将整个 XML 文档自动解析为 PHP 变量
【发布时间】:2010-12-31 03:33:28
【问题描述】:

嘿,基本上得到了一个庞大的 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 变量的文档。因此,例如,他们最终会看起来像。 $包装; $sub1; $sub[2]; $sub2; $sub3; $sub4; $sub3['价值']; $sub4['value'];

所以我必须聪明地深入研究可能有 8 个孩子?

这是可能的还是我必须像这样输入 $sub1 = $xml->wrap->sub1;因为这就像...超过 1k 行我不想存在的代码哈哈。

只要 xml 提要是 HERE

感谢您的宝贵时间:)

【问题讨论】:

  • PHP 站点上 SimpleXML 文档的 commnets 中有很多 dom->array 示例函数:ca2.php.net/simplexml
  • 您可以将整个 xml 文件存储到一个数组变量中。该数组将具有子数组和值。解析后可以直接从数组中引用任意值。
  • @tHeSiD 你将如何使用 simplexml 来做这件事?
  • 我在答案中加了一小段代码,看看吧。

标签: php xml parsing


【解决方案1】:
   $xml = simplexml_load_string($response);
// $response is your xml file/output string

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

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

【讨论】:

    【解决方案2】:

    您建议的方法确实没有意义,因为您最终会得到与原始 XML 一样复杂的东西,并且需要付出同样多的努力来解析。因此,使用DOM parserSimpleXML 可能是一种明智的做法。

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

    【讨论】:

    • 我目前正在使用 simplexml,我真的不知道如何使用我以前从未接触过的任何 xml 东西。但我需要 xml 表中 98% 的数据。你说你建议我使用 simplexml,我仍然不知道如何有效地使用它来做我想做的事,我整天都在阅读 phpnet,但我找不到/做的任何事情似乎都无法解决我想要的问题 =/跨度>
    【解决方案3】:

    一旦将 xml 数据加载到 simpleXML 元素中,您就可以非常轻松地访问它。例如:

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

    虽然 sub 是保留字,但要小心。您可能必须将其括在括号中 $xml->{sub}

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

    您将不得不使用 DOM 对象来执行更复杂的操作,例如移除孩子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-12
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多