0

我正在尝试从 xml 字符串中获取信息并查看其中的子节点。我在用:

'Title' => $current->AttributeSets->children('ns2')->ItemAttributes->Title,

在 $current 的数组中

$current = $parsed_xml->ListMatchingProductsResponse->ListMatchingProductsResult->Products->Product;

命名空间是 ns2,子类是 ItemAttributes 和 Title。当我运行它时,我没有得到标题应该在哪里的信息。这是我运行脚本时的响应:

SimpleXMLElement Object()

谁能指出我正确的方向?我查看了其他帖子并尝试使用他们的示例,但它们对我不起作用。这是 XML:

    <?xml version="1.0"?>
<ListMatchingProductsResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01">
<ListMatchingProductsResult>
<Products xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01" xmlns:ns2="http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd">
<Product>
<AttributeSets>
<ns2:ItemAttributes xml:lang="en-US">
<ns2:Title>JavaScript: The Missing Manual</ns2:Title>
4

3 回答 3

0

您通常需要将 simpleXml 元素转换为字符串以获取值。尝试 'Title' => (string)$current->AttributeSets->children('ns2')->ItemAttributes->Title

于 2012-07-10T17:35:59.583 回答
0

如果其他人需要做类似的事情,获取孩子信息的正确方法是:

'Title' => $current->AttributeSets->children('ns2', true)->ItemAttributes->Title,

String 不是必需的,但 true 是。

于 2012-07-12T12:41:00.770 回答
-1

另一个解决方案是删除命名空间 ns2,然后通过简单的字符串替换将其放入 simplexml_load_string,我认为这是一种 hack,但我就是这样做的。

$response = str_replace('ns2:', '', $response);
$parse_xml = simplexml_load_string($response);
于 2012-08-23T12:36:35.240 回答