【问题标题】:Google Spreadsheet ImportXML xpath issue谷歌电子表格 ImportXML xpath 问题
【发布时间】:2015-02-11 16:24:16
【问题描述】:

我正在尝试将此 XML 提要导入 Google 电子表格: http://cloud.tfl.gov.uk/TrackerNet/LineStatus

但我似乎无法为要解析的提要获得正确的 xPath。

我试过了:

=importxml("http://cloud.tfl.gov.uk/TrackerNet/LineStatus","/ArrayOfLineStatus")

=importxml("http://cloud.tfl.gov.uk/TrackerNet/LineStatus","/arrayoflinestatus//linestatus[1]@statusdetails")    

其他一些,但没有运气。我一直在使用http://xmltoolbox.appspot.com/xpath_generator.html 来尝试获取 Xpath。

编辑:

这是 XML 的编辑版本:

<ArrayOfLineStatus xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns="http://webservices.lul.co.uk/">
<LineStatus ID="0" StatusDetails="">
<BranchDisruptions/>
<Line ID="1" Name="Bakerloo"/>
<Status ID="GS" CssClass="GoodService" Description="Good Service"     IsActive="true">
<StatusType ID="1" Description="Line"/>
</Status>    
<LineStatus ID="81" StatusDetails="">
<BranchDisruptions/>
<Line ID="81" Name="DLR"/>
<Status ID="GS" CssClass="GoodService" Description="Good Service" IsActive="true">
<StatusType ID="1" Description="Line"/>
</Status>
</LineStatus>
</ArrayOfLineStatus>    

【问题讨论】:

  • 抱歉,我输入了错误的 URL。我现在已经修复了它以及它返回的一些 XML。

标签: xml xpath google-sheets google-sheets-importxml


【解决方案1】:

您的 ImportXML() 调用不起作用,因为从 google 的角度来看,给定 url 的输出不是格式正确的 XML。 我多次遇到此问题,并且由于没有工具/选项可用于将传入数据预处理为 Google 电子表格将接受的格式,因此您必须放弃。
(请注意,我从未说过您的文件有任何问题。我认为 Google 表格对 xml 的处理远非理想,但我无法修复)
您现在的选择是:

  1. 使用互联网上提供的众多用户创建的工作表脚本/函数之一来解析您的 XML。
  2. 使用其他import...() 函数之一(例如=IMPORTDATA("http://cloud.tfl.gov.uk/TrackerNet/LineStatus"))并对结果进行后处理
  3. 使用 javascript 版本的状态检查器并抓取它:(=IMPORTHTML("http://www.tfl.gov.uk/tfl/syndication/feeds/esubs/portrait-27.html","table",1))

【讨论】:

  • 具体来说,导入似乎失败了,因为该文档中有一个默认命名空间。
  • 谢谢 - 知道这很有帮助。然后我会尝试处理 =IMPORTDATA 版本。
  • IMPORTXML() 调用有效。问题出在 xPath 上。
【解决方案2】:

OP 提供的公式结果为空,因为文件使用了命名空间。

注意:IMPORTXML 使用xPath 1.0

尝试以下方法:

  1. 创建一个新文件。
  2. 添加以下内容。

A1:XML 文件的 URL。
A2:xPath 查询。仔细检查它不会为空。
A3:=IMPORTXML(A1,A2)

示例1:以下不使用位置代替节点名。

    +   ---------------------------------------------   +
    |                        A                          |
    +   ---------------------------------------------   +
  1 |   http://cloud.tfl.gov.uk/TrackerNet/LineStatus   |
  2 |   /*/*[position()<10]/@ID                         |
  3 |                                               0   |
  4 |                                               1   |
  5 |                                              10   |
  6 |                                               2   |
  7 |                                               8   |
  8 |                                               4   |
  9 |                                               9   |
 10 |                                               5   |
 11 |                                               6   |
    +   ---------------------------------------------   +

示例 2:以下使用函数 local-name() 使用测试谓词

    +   ---------------------------------------------   +
    |                        A                          |
    +   ---------------------------------------------   +
  1 |   http://cloud.tfl.gov.uk/TrackerNet/LineStatus   |
  2 |   //*[local-name() = 'Line']/@Name                |
  3 |   Bakerloo                                        |
  4 |   Central                                         |
  5 |   Circle                                          |
  6 |   District                                        |
  7 |   Hammersmith and City                            |
  8 |   Jubilee                                         |
  9 |   Metropolitan                                    |
 10 |   Northern                                        |
 11 |   Piccadilly                                      |
 12 |   Victoria                                        |
 13 |   Waterloo and City                               |
 14 |   Overground                                      |
 15 |   TfL Rail                                        |
 16 |   DLR                                             |
 17 |   Trams                                           |
    +   ---------------------------------------------   +

查看上面的例子:File

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多