YQL выбрать из xml - PullRequest
       39

YQL выбрать из xml

0 голосов
/ 15 августа 2011

Я использую консоль YQL для выполнения следующего запроса:

 select * 
   from xml 
  where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp" 
        and itemPath="html.body.form"

Результаты не возвращаются.Я также пытался использовать xpath и css только для усмешки, но я не получил результатов.Если я уберу второй фильтр, я получу разметку страницы.Я делаю что-то неправильно?Это XHTML-страница (в соответствии с типом документа), поэтому select * from html не сработало.

Спасибо.

ОБНОВЛЕНИЕ

У меня естьобновил синтаксис моего запроса до одного запроса, который, по крайней мере, возвращает результаты, но мне нужно углубиться.Что мне действительно нужно, это что-то вроде этого:

 select * 
   from xml 
  where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp" 
        and itemPath="html.body.form.div#wrapper.div#page.div#content"

К сожалению, этот синтаксис для доступа к определенному div по id не работает, и я не нашел никакого способа достижения этого целевого div (тот, с id="content"), который вообще возвращает любые результаты.

ОБНОВЛЕНИЕ

Я споткнулся, и я имею в виду споткнулся наYQL-запрос, который работает (на данный момент давайте не будем обращать внимания на то, насколько он хрупкий):

 select * 
   from xml 
  where url="http://www.inova.org/patient-and-visitor-information/facilities/inova-fair-oaks-hospital/plan-your-visit/index.jsp" 
        and itemPath="html.body.form.div.1.div.4.div.2"

Любые предложения о том, как сделать его менее хрупким (и в идеальном случае пуленепробиваемым), были бы действительно высоко оценены.

1 Ответ

0 голосов
/ 25 августа 2011

Я думаю, это может быть связано с тем, как пишется xhtml, а не с фактическим оператором YQL.

Firefox выдает эту ошибку при попытке прямого доступа к оператору YQL:

XML Parsing Error: undefined entity
Location:http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fwww.inova.org%2Fpatient-and-visitor-information%2Ffacilities%2Finova-fair-oaks-hospital%2Fplan-your-visit%2Findex.jsp%27
Line Number 307, Column 12:

Fairfax, VA&nbsp; 22033<br/>
-----------^

Если вы используете jQuery, вы можете обойти это следующим образом:

$.ajax({
    type : 'GET',
    dataType : 'xml',
    url : 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%22http%3A%2F%2Fwww.inova.org%2Fpatient-and-visitor-information%2Ffacilities%2Finova-fair-oaks-hospital%2Fplan-your-visit%2Findex.jsp%22',
    success : function(xhtml) {
        //find all nodes
        $(xhtml).find('h1').each(function(){
            console.log($(this).html())
        });

        //target specific node
        console.log($('#content').html())
    }
})
...