gpt4 book ai didi

php - simplexml_load_string 命名空间的正确参数

转载 作者:行者123 更新时间:2023-12-04 18:12:50 24 4
gpt4 key购买 nike

我目前正在尝试从谷歌联系人 api 中提取信息。使用库中提供的示例代码:

$response = json_encode(simplexml_load_string($val->getResponseBody())); 
$result = json_decode($response, true);
simplexml_load_string函数不接受命名空间。看着 php.net 以及如何添加参数我有点迷茫。
$xml = json_encode(simplexml_load_string(null, $val->getResponseBody(), null, 'gd', true));

尝试从我的 xml 字符串中提取“gd”命名空间的事件我收到一个错误。有没有人可以提供帮助?

输出错误是这样的:

simplexml_load_string() expects parameter 2 to be a class name derived from SimpleXMLElement



但除了这个错误之外,它还正确打印了我想要的信息......我很困惑。

我需要提取的信息示例:
<gd:extendedProperty xmlns:gs='http://schemas.google_apps_sync.com' name='google_apps_sync'>
<gs:em_odn1>awalker@xxxxx.com</gs:em_odn1>
<gs:em_dn1>First Name Last Name</gs:em_dn1>
<gs:em_ad1>awalker@xxxxxxxxx.com</gs:em_ad1>
<gs:em_t1>SMTP</gs:em_t1>
<gs:f_c>32791</gs:f_c>
<gs:f>Last, First</gs:f>
</gd:extendedProperty>

编辑
$xmlResponse = simplexml_load_string($val->getResponseBody(), null, 0, 'gd', true);
$xmlResponse->registerXPATHNamespace('gd', 'http://schemas.google_apps_sync.com');
$xmlResponse->registerXPATHNamespace('gs', 'http://schemas.google_apps_sync.com/contact/2008');

上面的代码允许我访问我需要的命名空间,但一次只能访问一个......例如:
$email = json_encode($xmlResponse->xpath('//gd:email'), true));
$postal = json_encode($xmlResponse->xpath('//gd:postalAddress'), true);
$name = json_encode($xmlResponse->xpath('//gs:em_dn1'), true);

如果我打印这些变量,我会得到我需要的相应信息,但是我没有办法访问原始 $xmlResponse在我启动了我想要的命名空间之后的变量?

前任:
json_decode($xmlResponse, true);

不会给我定义的命名空间的 xml 信息。

最佳答案

您可以使用子项获取具有 namespace 的元素。例如:

<people xmlns:ns="http://something.com/ns">
<person><ns:name>Amy</ns:name></person>
<person><ns:name>Bill</ns:name></person>
</people>

$xml = simplexml_load_string($string);
echo $xml->person[0]->children("http://something.com/ns")->name; // will echo Amy

关于php - simplexml_load_string 命名空间的正确参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12286229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com