XPath与现有节点不匹配

时间:2014-10-01 13:47:42

标签: php xml xpath ebay

我有下一个XML作为对eBay API调用的响应。

<?xml version="1.0" encoding="UTF-8"?>
<GetSingleItemResponse xmlns="urn:ebay:apis:eBLBaseComponents">
    <Timestamp>2014-10-01T13:20:06.540Z</Timestamp>
    <Ack>Success</Ack>
    <Build>E889_CORE_APILW_17041759_R1</Build>
    <Version>889</Version>
    <Item>
        <Description>...</Description>
        <GalleryURL>http://thumbs4.ebaystatic.com/...</GalleryURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        ...
    </Item>
</GetSingleItemResponse

我的目标是获得PictureURL。为了做到这一点,我正在使用 SimpleXMLElement :: xpath()
这是代码:

$responseXmlObj = simplexml_load_string($theAboveMentionedXML);

$itemXmlObj   = $responseXmlObj->Item;
$searchResult = $itemXmlObj->xpath('/PictureURL');

问题是我得到的 $ searchResult 是一个空数组,尽管如果我试图访问 PictureURL 节点那样:

$pictureURL = $itemXmlObj->PictureURL->__toString();

我正在获取第一个URL值,即 $ itemXmlObj 中存在节点。

我也尝试了下一个XPath:“// PictureURL”; “PictureURL”;
甚至试图从$ responseXmlObj中获取节点:“/ Item / PictureURL”
上述都没有带来任何结果。

有人可以解释一下为什么会发生这种情况 谢谢!

P.S。的 更有意思的是,下一个对我来说没有任何问题(!!!):

$xml = '
    <Item>
        <GalleryURL>http://thumbs4.ebaystatic.com/...</GalleryURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
        <PictureURL>http://i.ebayimg.com/...</PictureURL>
    </Item>';

$responseXmlObj = simplexml_load_string(xml );

$itemXmlObj   = $responseXmlObj->Item;
$searchResult = $itemXmlObj->xpath('/PictureURL');

这里我将$ searchResult作为一个包含2个包含URL的SimpleXML元素的数组。

0 个答案:

没有答案