【问题标题】:Why am I getting a system identifier error with my google app script为什么我的谷歌应用脚​​本出现系统标识符错误
【发布时间】:2015-02-18 01:58:05
【问题描述】:

我正在使用以下 Google Apps 脚本进行屏幕抓取。

function getLinks(html) {
  var doc = XmlService.parse(html);
  var html = doc.getRootElement();
  var table = getElementsByClassName(html, "headLinks")[0];
  var output = '';
  var linksInMenu = getElementsByTagName(table, 'a');
  for(i in linksInMenu) output+= XmlService.getRawFormat().format(linksInMenu[i])+'<br>';
  return HtmlService.createHtmlOutput(output);
}

第一行代码:var doc = XmlService.parse(html);抛出以下错误:

Error on line 2: The system identifier must begin with either a single or double quote character

我相信错误消息告诉我 html 系统 ID 周围没有单引号或双引号。 html 的第 2 行如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

我不确定系统标识符是什么意思。有没有人遇到过这个问题,您是否能够提出解决方法或解决方案。

Google Apps 脚本代码来自 Romain Vialard 的:website

【问题讨论】:

    标签: javascript xml parsing google-apps-script


    【解决方案1】:

    parse 方法采用xml 参数。 XML 的第一行通常以 XML 声明开头,其中包含版本和编码信息。 HTML 和 XML 都可以有一个以&lt;!DOCTYPE 开头的系统标识符,即在第二行。系统标识符的可接受语法是:

    <!DOCTYPE root-element PUBLIC "FPI" ["URI"] [ 
    <!-- internal subset declarations -->
    ]>
    

    <!DOCTYPE root-element SYSTEM "URI" [ 
    <!-- internal subset declarations -->
    ]>
    

    我用硬编码数据运行了一个测试函数:

    function testXML_Parse() {
    
      var theXML_Declaration = '<?xml version="1.0" encoding="UTF-8"?>';
      var theXML = "<note><to>Someone</to><from>Anyone</from><heading>Reminder</heading>" +
        "<body>Don't forget me this weekend!</body></note>";
    
      var theSysIdentifier = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
      var doc = XmlService.parse(theXML_Declaration + theSysIdentifier + theXML);
    
      Logger.log('doc: ' + doc);
    }
    

    我使用了与您提供的完全相同的第二行,并且没有任何错误。

    如果没有传递到html 变量的所有数据,则存在无法测试的未知数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 2022-11-22
      • 2019-06-23
      • 1970-01-01
      相关资源
      最近更新 更多