如何在 PHP 中解析复杂的 XML-RPC 结构?

发布于 2024-11-25 07:00:16 字数 921 浏览 3 评论 0原文

这是我的 XML 对象: http://pastebin.com/0L8vf0ja 它是从以下位置创建的:

<?xml version="1.0" encoding="utf-8"?>
<methodResponse><params><param><value><struct><member><name>result</name><value><struct><member><name>application_instance_id</name><value><i4>89</i4></value></member></struct></value></member><member><name>status</name><value><i4>0</i4></value></member></struct></value></param></params></methodResponse>

我知道到这个级别:

 $ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member-> 

但是从这里开始,正如您在pastebin中看到的那样,它变成了一个对象数组 - 我不知道如何继续。

有什么想法吗?

Here is my XML object: http://pastebin.com/0L8vf0ja
Which was created from:

<?xml version="1.0" encoding="utf-8"?>
<methodResponse><params><param><value><struct><member><name>result</name><value><struct><member><name>application_instance_id</name><value><i4>89</i4></value></member></struct></value></member><member><name>status</name><value><i4>0</i4></value></member></struct></value></param></params></methodResponse>

I know upto this level:

 $ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member-> 

But from here, as you see in the pastebin, it becomes an array of objects - and I am not sure how to proceed.

Any ideas, please?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

往日 2024-12-02 07:00:16

通过将其作为数组访问:

$x = '<root><child><foo>23</foo><foo>34</foo></child></root>';
$xml = new SimpleXMLElement($x);
var_dump($xml->child->foo[0]);
var_dump($xml->child->foo[1]);

但是,如果启用了它,则 xmlrpc_decode 函数也许更容易使用。

var_dump(xmlrpc_decode($yourxml));
array(2) {
  ["result"]=>
  array(1) {
    ["application_instance_id"]=>
    int(89)
  }
  ["status"]=>
  int(0)
}

By accessing it as an array:

$x = '<root><child><foo>23</foo><foo>34</foo></child></root>';
$xml = new SimpleXMLElement($x);
var_dump($xml->child->foo[0]);
var_dump($xml->child->foo[1]);

But, if you have it enabled, the xmlrpc_decode function is perhaps easier to use.

var_dump(xmlrpc_decode($yourxml));
array(2) {
  ["result"]=>
  array(1) {
    ["application_instance_id"]=>
    int(89)
  }
  ["status"]=>
  int(0)
}
ζ澈沫 2024-12-02 07:00:16
$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member[0]-> // first <member>
$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member[1]-> // second <member>
$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member[0]-> // first <member>
$ApplicationInstanceID = (int)(string)$data->params->param->value->struct->member[1]-> // second <member>
童话里做英雄 2024-12-02 07:00:16

我有点困惑 - 看起来您已经将 XML 解析为 PHP 对象...所以现在只需访问数组的子成员,就像访问数组的任何元素一样:

$data->params->param->value->struct->member[0]

并且,对于它的属性:

$data->params->param->value->struct->member[0]->name

I'm a bit confused -- it looks like you've already parses the XML into a PHP object... So now just access submembers of the array as you would any elements of an array:

$data->params->param->value->struct->member[0]

And, for it's properties:

$data->params->param->value->struct->member[0]->name
最笨的告白 2024-12-02 07:00:16

您可以尝试使用 xpath 来获取我认为的节点值,SimpleXml 实现了它...
http://php.net/manual/en/simplexmlelement.xpath.php

you could try to use xpath to get the node value i think, SimpleXml implements it...
http://php.net/manual/en/simplexmlelement.xpath.php

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文