谷歌应用程序脚本,获取API XML和获取孩子的孩子



我有点拘泥于使用Google App Script处理多级XML。

我正在使用UrlFetchApp.fetch((命令执行API XML获取。它起作用了。XML格式如下所示:

<CALENDAR>
<CalendarManager>
<Categories>
<Category Id="1" AuthorId="1234">
<Author Legacy="True"></Author>
<Name></Name>
<LastUpdated></LastUpdated>
</Category>
<Category Id="2" AuthorId="1234">
<Author Legacy="True"></Author>
<Name></Name>
<LastUpdated></LastUpdated>
<Subcategories>
<Subcategory Id="1" AuthorId="1324">
<Author Legacy="True"></Author>
<Name></Name>
<LastUpdated></LastUpdated>
</Subcategory>
<Subcategory Id="2" AuthorId="1234">
<Author Legacy="True"></Author>
<Name></Name>
<LastUpdated></LastUpdated>
</Subcategory>
</Category>
</Categories>
</CalendarManager>
</CALENDAR>

这是我代码的主要部分。目前,我可以从Category中获取信息,您可以在下面的代码片段中看到我的信息。我的问题是,我每次尝试获取子类别时,如果存在子类别,我无法将数据分配给变量。

// Get Category Information 
var rAndCTypes = root.getChild('CalendarManager').getChild('Categories').getChildren('Category');  
for (var r = 0; r < rAndCTypes.length; r++) {
var rAndC = rAndCTypes[r];
var typeIdID =  rAndC.getAttribute('Id').getValue().replace(/['=Id]/g, "");
var AuthorId =  rAndC.getAttribute('AuthorId').getValue().replace(/['=AuthorId]/g, "");
var authorLegacy = rAndC.getContent(0).getValue();        
var name = rAndC.getContent(1).getValue();
var lastUpdated = rAndC.getContent(2).getValue();
}

我们非常感谢您的帮助,因为我已经被困了一整天。

您应该使用getContent(3(来获得下一个子项

为了避免子类为null,请在前面为子类别使用条件。这里有一个例子:

var rAndCTypes = root.getChild('CalendarManager').getChild('Categories').getChildren('Category');  
for (var r = 0; r < rAndCTypes.length; r++) {
var rAndC = rAndCTypes[r];
var typeIdID =  rAndC.getAttribute('Id').getValue().replace(/['=Id]/g, "");
var AuthorId =  rAndC.getAttribute('AuthorId').getValue().replace(/['=AuthorId]/g, "");
var authorLegacy = rAndC.getContent(0).getValue();        
var name = rAndC.getContent(1).getValue();
var lastUpdated = rAndC.getContent(2).getValue();
var subcategories = rAndC.getContent(3);
if(subcategories) {
subcategoriesChildren = subcategories.getChildren('Subcategory');
for (var i = 0; i < subcategoriesChildren.length; i++) {
var sub = subcategoriesChildren[i];
var subTypeIdID =  sub.getAttribute('Id').getValue().replace(/['=Id]/g, "");
var subAuthorId =  sub.getAttribute('AuthorId').getValue().replace(/['=AuthorId]/g, "");
var subAuthorLegacy = sub.getContent(0).getValue();        
var subName = sub.getContent(1).getValue();
var subLastUpdated = sub.getContent(2).getValue();
}
}
}

参考

  • XML服务

最新更新