2015-02-11 140 views
1

我想在一個電子表格谷歌導入該XML飼料: http://cloud.tfl.gov.uk/TrackerNet/LineStatus谷歌電子表格IMPORTXML XPath的問題

,但我似乎無法得到正確的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>  
+0

對不起,我把錯誤的URL。我現在已經修復了它,並返回了一些XML。 – Rob 2015-02-11 17:26:55

回答

1

ImportXML()呼叫不會因爲從谷歌的角度來看工作從給定的URL的輸出不是合式XML。 我多次遇到此問題,並且由於您沒有工具/選項可用於將傳入數據預處理爲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)
+0

特別是,導入似乎失敗了,因爲該文檔中有一個默認名稱空間。 – 2015-02-12 18:17:29

+0

謝謝 - 這有助於瞭解。我會嘗試處理= IMPORTDATA版本。 – Rob 2015-02-12 18:33:55

+0

IMPORTXML()調用起作用。問題出在xPath上。 – 2016-05-24 18:29:26

0

公式的結果由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:下面的使用功能本地名稱()

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