在Google Apps脚本中分析XML ebay api元素txt按名称



好吧,所以我试图使用Google Apps脚本从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); 
}

运行代码后,我会遇到错误,说该值为null

" typeError:无法调用方法" null的getChild。"

调用 getChild()时需要在命名空间中传递:

var ebay = XmlService.getNamespace('urn:ebay:apis:eBLBaseComponents');
var Title=root.getChild('Item',ebay).getChild('Title',ebay).getText();

root元素的xmlns属性显示了名称空间。

此处记录了不同形式的getChild()(和其他功能):

https://developers.google.com/apps-script/reference/xml-service/element

最新更新