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

ファイルが名前空間を使用するため、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 に答える
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))
于 2015-02-12T15:05:06.737 に答える