2017-08-13 2 views
0

Ich bin auf der Suche nach meiner eigenen XML zu YQL übergeben, um in JSON zu analysieren, anstatt Yahoo Server die URL, die ich zur Verfügung stellen, die XML abfragen.Pass Raw XML für YQL-Abfrage

Aktuelle Anfrage wo Yahoo die Seite abfragt biete ich eine JSON-Antwort zu erhalten:

queue_request({ 
    dataType: 'jsonp', 
    url: 'https://query.yahooapis.com/v1/public/yql', 
    data: { 
     q: 'select * from xml where url="' + url + '"', 
     format: 'json' 
    }, 
    complete: callback 
}) 

Ich mag wäre etwas entlang der Linien von (Pseudo-Code) tun:

queue_request({ 
    dataType: 'jsonp', 
    url: 'https://query.yahooapis.com/v1/public/yql', 
    data: { 
     q: 'select * from xml where xmlstring="' + xml + '"', 
     format: 'json' 
    }, 
    complete: callback 
}) 

Um um zu vermeiden, dass Yahoo eine Anfrage an einen Server stellt. Irgendwelche Ideen, wie man das macht? Vielen Dank.

Antwort

0

Ich glaube nicht, dass es möglich ist, die integrierten YQL-Tabellen (z. B. xml) zu verwenden. Es ist jedoch möglich, indem Sie eine custom Open Data Table verwenden.

Benutzerdefinierte Datentabelle

Sie eine benutzerdefinierte Tabelle erstellen und ein <execute> block to execute some JavaScript verwenden, die den XML-String in der Abfrage vorgesehen analysiert und machen das resultierende XML-Objekt das Ergebnis der Abfrage sein.

... 
<select itemPath="" produces="XML"> 
    <inputs> 
    <key id="xmlstring" type="xs:string" paramType="variable" required="true"/> 
    </inputs> 
    <execute><![CDATA[ 
    response.object = new XML(xmlstring); 
    ]]></execute> 
</select> 
... 

»Siehe the full example data table

Beispiel Abfrage

Jetzt, wo es eine benutzerdefinierte Tabelle ist, können wir es in einer Abfrage use kann.

use "https://raw.githubusercontent.com/salathe/yql-tables/examples/data/xmlstringarg.xml" as xml; 
select * from xml where xmlstring="<example><a>A</a><b>B</b></example>"; 

»Siehe this query in the YQL console

Ihr Codebeispiel

Wirklich, nur die Abfrage selbst hat sich verändert die use Aussage aufzunehmen.

var query = 'use "https://raw.githubusercontent.com/salathe/yql-tables/examples/data/xmlstringarg.xml" as xml;' 
      + 'select * from xml where xmlstring="' + xml + '"'; 
queue_request({ 
    dataType: 'jsonp', 
    url: 'https://query.yahooapis.com/v1/public/yql', 
    data: { 
     q: query, 
     format: 'json' 
    }, 
    complete: callback 
}) 

Verbindungen