我有下一个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元素的数组。