从 xml 数据中提取元素,类似于 Google 应用脚本页面上的解析 xml 教程



这是数据流,(希望我正确显示了这一点,我花了很长时间才弄清楚)。我只是想提取标题,看看我是否可以让它工作。我显然迷路了,不明白为什么我总是收到错误。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <items total="475974">
        <link href="https://www.sciencebase.gov/catalog/items?
            max=1&amp;s=Search&amp;q=water&amp;format=xml" 
            rel="self" />
        <link href="https://www.sciencebase.gov/catalog/items?
            max=1&amp;s=Search&amp;q=water&amp;format=xml&amp;offset=1"
            rel="next" />
        <item id="4f4e4a62e4b07f02db6369dc">
        <link href="https://www.sciencebase.gov/catalog/
                item/4f4e4a62e4b07f02db6369dc" rel="self" />
        <oldId>1800335</oldId>
        <title>Reconnaissance of the water resources of Beaver County,
            Oklahoma</title>
        <summary>Ground water is the major source of water supply in Beaver
            County. Because of the rapidly increasing demand for the limited
            supply of water for irrigation, additional geologic and hydrologic
            data are needed for management of ground-water resources...</summary>
        </item>
    </items>

这是我的代码:

function myFunction() {
    var response = UrlFetchApp.fetch("http://www.sciencebase.gov/catalog        
        /items?s=Search&q=water&format=xml&max=1").getContentText();
    var parsedResponse = Xml.parse(response, true);
    //I tried this but it didn't work
    var title = parsedResponse.html.head.getElements("title");
    Browser.msgBox(title);
}

我总是使用工具来查看XML。如果你需要一个,在Chrome中,我使用XML Tree扩展。安装它,访问您的测试 URL,您将看到可扩展和可折叠的格式化 XML(就像 IE :)并使其易于查看结构。

以下是带有一些模组和轻度旁白的代码:

function myFunction() {
  //note I've set max=10 here
  var url="http://www.sciencebase.gov/catalog/items?s=Search&q=water&format=xml&max=10";
  var response = UrlFetchApp.fetch(url).getContentText();
  var parsedResponse = Xml.parse(response, true);
  debugger; //You will see in the debugger that your 10 results are each XmlElements in the array parsedResponse.items.item[]
  //iterate through the results
  for (var i = 0; i < parsedResponse.items.item.length; i++) {
    var result = parsedResponse.items.item[i];
    //View > Logs... to see the title of each result
    Logger.log(result.getElement("title").getText());
  }
}

记录以下 10 个标题:

Reconnaissance of the water resources of Beaver County, Oklahoma
..
Water resources data, Oklahoma, water year 2004; Volume 2. Red River basin

希望这有帮助,如果您需要进一步澄清,请告诉我。

最新更新