【问题标题】:trouble converting xml to somehting usable in php麻烦将 xml 转换为可在 php 中使用的东西
【发布时间】:2014-04-03 12:08:55
【问题描述】:

我收到了一个 xml 响应:

$foo = $client->__doRequest (parameters here)

当我回显 $foo 时,我得到的 xml 完全按照我应该被告知的那样。现在的问题是我想从 xml 中提取一些值。现在我能看到的最简单的方法是将其转换为 php 数组,然后非常简单地获得价值并做很多可爱的事情,但我似乎很难做到这一点。已经看到很多使用 simple_load_xml 的示例,但我得到的只是“注意:数组到字符串的转换”。当我 var_dump '$foo' 我得到 'string 'xml' '。

我做错了什么?

【问题讨论】:

  • 如果需要在 PHP 中解析 XML,使用 DOMDocument 即可:php.net/manual/en/class.domdocument.php
  • 请更具体地说明您想要完成什么,您的 XML 是什么样的,您的代码是什么样的。

标签: php xml simplexml soap-client


【解决方案1】:

正如@CD001 所建议的,我坚持使用 DOMDocument 并最终用以下代码解决了这个问题:

$dom = new DOMDocument;
$dom->loadXML($xml);
$things = $dom->getElementsByTagName('chocolate');

/** I only had a single result so had to do it this way rather then a loop**/

if($things->length > 0) {
  $node = $things->item(0);
  $chocolate = $node->nodeValue;
} 
else {
  // empty result set
}
echo $chocolate;

呸! JSON 好多了...

【讨论】:

  • 只有在您了解 Xpath 和命名空间之前,这才是正确的。在那之后,JSON 需要做更多的工作。 :-)
【解决方案2】:

使用 Xpath:

$dom = new DOMDocument;
$dom->loadXML($xml);
$xpath = new DOMXpath($dom);

// get content of the first chocolate element node as a string
$chocolate = $xpath->evaluate('string(//chocolate)');

echo $chocolate;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2022-01-21
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多