1

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

2 回答 2

1

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

  1. 使用 Internet 上提供的众多用户创建的工作表脚本/函数之一来解析您的 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)
于 2015-02-12T15:05:06.737 回答
1

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                                           |
    +   ---------------------------------------------   +

请参阅上面的示例:文件

于 2016-05-24T18:48:50.153 回答