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 的处理远非理想,但我无法修复)
您现在的选择是:
- 使用互联网上可用的许多用户创建的作品之一sheet 脚本/函数来解析您的XML。
- 使用其他
import...()
函数之一(例如 =IMPORTDATA("http://cloud.tfl.gov.uk/TrackerNet/LineStatus")
)并 post 处理结果
- 使用 javascript 版本的状态检查器并将其抓取:(
=IMPORTHTML("http://www.tfl.gov.uk/tfl/syndication/feeds/esubs/portrait-27.html","table",1)
)
OP 提供的公式结果为空,因为文件使用了命名空间。
注意:导入XML 使用xPath 1.0
尝试以下操作:
- 创建一个新文件。
- 添加以下内容。
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
我正在尝试将此 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 的处理远非理想,但我无法修复)
您现在的选择是:
- 使用互联网上可用的许多用户创建的作品之一sheet 脚本/函数来解析您的XML。
- 使用其他
import...()
函数之一(例如=IMPORTDATA("http://cloud.tfl.gov.uk/TrackerNet/LineStatus")
)并 post 处理结果 - 使用 javascript 版本的状态检查器并将其抓取:(
=IMPORTHTML("http://www.tfl.gov.uk/tfl/syndication/feeds/esubs/portrait-27.html","table",1)
)
OP 提供的公式结果为空,因为文件使用了命名空间。
注意:导入XML 使用xPath 1.0
尝试以下操作:
- 创建一个新文件。
- 添加以下内容。
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