在谷歌应用程序脚本中解析XML会按名称发出eBay api元素txt

时间:2017-03-08 20:11:09

标签: xml google-apps-script ebay-api

好的,所以我试图通过谷歌应用程序脚本从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 &amp; Garden:Yard, Garden &amp; Outdoor Living:Gardening Supplies:Composting &amp; 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。”

1 个答案:

答案 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