XmlService和importxml之间的区别

时间:2015-10-02 16:38:47

标签: javascript xml xpath google-apps-script google-sheets

尝试在google apps脚本中将html解析为xml时,此代码为:

var yahoo= 'http://finance.yahoo.com/q?s=aapl'
var xml = UrlFetchApp.fetch(yahoo).getContentText(); 
var document = XmlService.parse(xml);

将返回如下错误:

第20行出错:实体名称必须紧跟'&'在实体参考中。 (第13行,文件"")

大概是因为html在第20行中不是xml兼容的。令我惊讶的是,当你在google工作表中执行同样的操作并提供xpath时,html将被解析为xml而没有问题:< / p>

=IMPORTXML("http://finance.yahoo.com/q?s=aapl,"//div[@class='title']")

将返回&#34; Apple Inc.(AAPL)&#34;。我假设sheet函数有一些清理html的方法,使其符合xml。

  • 您认为情况可能如此吗?
  • 如果是的话,您是否知道如何在应用脚本中调整xml解析器,以便我可以从yahoo finance访问html并将其视为xml?

提前感谢!

1 个答案:

答案 0 :(得分:1)

XmlService无法进行宽松解析。所以现在没办法。但是你仍然可以使用支持lenient parse的旧Xml服务(也许IMPORTXML也可以使用它)。有效的代码:

var yahoo= 'http://finance.yahoo.com/q?s=aapl'
var xml = UrlFetchApp.fetch(yahoo).getContentText(); 
var document = Xml.parse(xml, true);

问题报告中没有能力在新XmlService中轻松解析:https://code.google.com/p/google-apps-script-issues/issues/detail?id=3727

所以我建议你用旧的方式来关注这个问题。