Google 电子表格 ImportXML xpath 问题

Google Spreadsheet ImportXML xpath issue

我正在尝试将此 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>    

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

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

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

注意:导入XML 使用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