好的,所以我试图通过谷歌应用程序脚本从eBay api获取eBay项目标题。 这是来自url的示例XML输出。
<GetSingleItemResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2017-03-08T20:00:54.557Z</Timestamp>
<Ack>Success</Ack>
<Build>E981_CORE_APILW_4424327_R1</Build>
<Version>981</Version>
<Item>
<Description>Description</Description>
<ItemID>132119159999</ItemID>
<EndTime>2017-04-07T00:11:36.000Z</EndTime>
<ViewItemURLForNaturalSearch></ViewItemURLForNaturalSearch>
<ListingType>FixedPriceItem</ListingType>
<Location>Brooklyn, New York</Location>
<GalleryURL>GalleryURL</GalleryURL>
<PictureURL>PictureURL</PictureURL>
<PrimaryCategoryID>181023</PrimaryCategoryID>
<PrimaryCategoryName>Home & Garden:Yard, Garden & Outdoor Living:Gardening Supplies:Composting & Yard Waste:Garden Compost Bins</PrimaryCategoryName>
<BidCount>0</BidCount>
<ConvertedCurrentPrice currencyID="USD">249.99</ConvertedCurrentPrice>
<ListingStatus>Active</ListingStatus>
<TimeLeft>P29DT4H10M42S</TimeLeft>
<Title>Title</Title>
<Country>US</Country>
<AutoPay>false</AutoPay>
<ConditionID>1000</ConditionID>
<ConditionDisplayName>New</ConditionDisplayName>
</Item>
</GetSingleItemResponse>
这是代码。
function myFunction() {
var item='http://open.api.ebay.com/shopping?callname=GetSingleItem&responseencoding=XML&appid=XXXXXXXXXXXX&siteid=0&version=967&ItemID=132119159999&IncludeSelector=Description';
var xml = UrlFetchApp.fetch(item).getContentText();
var root=XmlService.parse(xml).getRootElement();
var Title=root.getChild('Item').getChild('Title').getText();
Logger.log(Title);
}
运行代码后,我收到错误,说明值为空
“TypeError:无法调用方法”getChild“为null。”
答案 0 :(得分:0)
调用getChild()
时需要传入命名空间:
var ebay = XmlService.getNamespace('urn:ebay:apis:eBLBaseComponents');
var Title=root.getChild('Item',ebay).getChild('Title',ebay).getText();
命名空间由根元素的xmlns
属性显示。
这里记录了getChild()
(和其他函数)的不同形式:
https://developers.google.com/apps-script/reference/xml-service/element