Я не знаю точно, что вы называете "библиотекой AJAX JavaScript" - создание HTTP-запросов - это проблема , отличная от доступа к узлам в дереве документов.
Если вы понимаетебиблиотека как «набор ресурсов, используемых для разработки программного обеспечения» ( Wikipedia ), затем, как часть библиотеки JSX , я написал довольно совместимые оболочки для XMLHttpRequest
и пространства имен-в курсе DOM Level 3 XPath : http.js
и xpath.js
.
http.js
поддерживает синхронную и асинхронную обработку одинаковои даже может получить доступ к локальной файловой системе (если разрешение предоставлено).Поскольку JSX считается библиотекой, вы можете использовать http.js
и xpath.js
либо отдельно, либо с внешним кодом для дополнения либо одного, либо вместе.
Вы можете использовать их вместе, например, следующим образом.Предположим, у вас есть XML-документ с именем ресурса test.xml
, например
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<res:Response
xmlns:res="http://domain.example/Response">
<res:OUTPUT>
<res:UNDO_COUNT>1.0</res:UNDO_COUNT>
<res:MSG>Undo complete (No more to undo)</res:MSG>
</res:OUTPUT>
</res:Response>
<res:OUTPUT
xmlns:res="http://domain.example/Response">
foo
</res:OUTPUT>
</soap:Body>
</soap:Envelope>
, и вы хотите извлечь 1.0
из его элемента res:UNDO_COUNT
, вы можете написать:
<!-- 1. Include prerequisites and dependencies using Resource Builder (recommended) -->
<script type="text/javascript" src="builder.php?src=object,string,http,xpath"></script>
<script type="text/javascript">
/*
* 2. Construct the HTTP request wrapper;
* the default is a GET request with asynchronous handling
*/
var request = new jsx.net.http.Request("test.xml");
/* 3. Prepare processing of the HTTP response */
request.setSuccessListener(function (response) {
/* 5. Get the reference to the XMLDocument object */
var doc = response.responseXML;
/* 6. Create the namespace resolver that fits your query best */
var nsResolver = jsx.xpath.createFullNSResolver(null, doc);
/* 7. Make the XPath query */
var nodes = jsx.xpath.evaluate("//res:UNDO_COUNT/text()", doc, nsResolver);
/*
* 8. Process the result. jsx.xpath.evaluate() returns a reference
* to an Array instance if you do not specify the result type.
*/
/* "1.0" */
console.log(nodes[0].data);
});
/* 4. Make the HTTP request */
request.send();
</script>
См. Также: Синтаксический анализ XML / RSS с URL-адреса с использованием Java Script
Ge Комбинация JSX: object.js
, http.js
и xpath.js
была протестирована в Gecko-, WebCore, MSHTML и Opera браузеры.Однако на данный момент JSX является в основном экспериментальным кодом.
Testcase , см. Консоль сценария
Конструктивная обратная связь приветствуется.Кроме того, JSX бесплатное программное обеспечение .(Вы еще не можете сделать checkout
, но я работаю над этим.)