Как мне запросить службу XML с помощью YQL?

#xml #web-services #rest #yql

#xml #веб-сервисы #rest #yql

Вопрос:

Я использую консоль YQL для экспериментов с запросом веб-службы REST XML.

Я нашел простую общедоступную службу для игры.

http://www.thomas-bayer.com/sqlrest/CUSTOMER/-151612345/

ВОЗВРАТ

 <CUSTOMER xmlns:xlink="http://www.w3.org/1999/xlink">
  <ID>-151612345</ID>
  <FIRSTNAME>Deepthi</FIRSTNAME>
  <LASTNAME>Deep</LASTNAME>
  <STREET>440 - 20th Ave.</STREET>
  <CITY>Los Angeles</CITY>
</CUSTOMER>
  

Если я использую запрос:

 select * 
from xml 
where url='http://www.thomas-bayer.com/sqlrest/CUSTOMER/-151612345/'
  

Я получаю этот возвращенный XML. Однако, если я попытаюсь ограничить доступ к данным одним элементом, например:

 select * 
from xml 
where url='http://www.thomas-bayer.com/sqlrest/CUSTOMER/-151612345/' 
  and xpath='//LASTNAME'
  

результаты не возвращаются.

Что я делаю не так?

Нажмите здесь, чтобы отобразить консоль YQL с загруженным запросом.

Ответ №1:

Правильный ключ для фильтрации результатов, как вы хотите, нет xpath , вместо этого он есть itemPath .

 SELECT *
FROM xml
WHERE url='http://www.thomas-bayer.com/sqlrest/CUSTOMER/-151612345/'
  AND itemPath='//LASTNAME'
  

(Попробуйте выполнить этот запрос в консоли YQL)

Вы можете увидеть ключи для данной таблицы, выполнив запрос desc <tablename> .

 desc xml
  

(Попробуйте выполнить этот запрос в консоли YQL)

В случае xml таблицы itemPath это может быть либо выражение XPath, либо путь с точкой E4X.