使用javascript生成远程XML,并从网页中使用

时间:2015-03-25 09:18:48

标签: javascript xml json

我正在寻找一个我想要消费"的场景。一个xml / json文档,并根据所述日期构建一些可视元素。

每个例子,一段时间的预订清单。让我们说数据将包含

<unit>
<booked>
<pic>
<booked range>

我不确定的是,如何从访问查询字符串到捕获返回的xml。这看起来很简单,但我似乎无法从Javascript中获取返回的XML。

更多信息:

我正在构建一个移动应用程序,它将显示从XML检索的数据。 (我想从应用程序运行url / query字符串,生成自定义xml文档,并读取返回的XML数据(不显示网页)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

<强>概要

  • 通过ajax调用收集xml。
  • Xml响应可用作dom树(已解析)或词法表示(文本)
  • 让回调处理程序处理您的xml并与dom交互
  • 处理xml的选项:
    • 的XPath
    • Xslt
    • DOM功能
    • 字符串操作
    • 字符串解析(可能毫无意义,除非您对解析有特殊要求)

<强>代码

使用XMLHttpRequest的纯Javscript解决方案(文档:例如。MDN referenceMDN usage hints;还存在tutorial on html5rocks)可能看起来类似于以下片段:

var oReq = new XMLHttpRequest();

function eh_onload ( ) {
    var xmlhttp = this;
    if (xmlhttp.readyState === 4) {
        console.log ( "xmlhttp.status = " + xmlhttp.status);
        if (xmlhttp.status === 200) {
            //
            // process your xml here.
            //
            console.log ( "responseText = '" + xmlhttp.responseText + "'");
            console.log ( "xml root element  = '" + xmlhttp.responseXML.documentElement.nodeName + "'");
        }
        else {
            console.log('error');
        }
    }
}

oReq.onload = eh_onload;
oReq.open("get", "http://wsearch.nlm.nih.gov/ws/query?db=digitalCollections&term=cholera", true);
oReq.send();

代码片段执行ajax请求并注册将在请求完成时执行的回调。如您所见,您可以访问接收的xml数据的词法表示形式或解析的DOM结构。

<强> 替代

如果您可以使用jquery库,则可以按照以下代码示例的说明进行操作:

function eh_xml ( parsedxml, textStatus, jqXHR ) {
    // process your xml here.
    //
    console.log ( "typeof(parsedxml) = '" + typeof(parsedxml)+ "'");
    console.log ( "$('term', parsedxml).length = " + $("term", parsedxml).length);
}

$.ajax({
      url: "http://wsearch.nlm.nih.gov/ws/query?db=digitalCollections&term=cholera"
    , dataType: "xml"
    , success: eh_xml
});

代码段执行ajax请求并提供一个回调函数,该回调函数接收解析后的(DOM)表示形式的xml。

注意&amp;需要注意的

代码示例使用美国NIH提供的公共Web服务返回xml数据。这个是随机选择的,并且仅用于工作PoC 。没有隶属关系,通常的法律免责声明适用。

可以使用以下序言在网站http://wsearch.nlm.nih.gov/上打开的控制台(例如Chrome中)测试代码,该序言在托管Web服务的站点的上下文中加载jquery库:

var script = document.createElement("script");
script.src = "http://code.jquery.com/jquery-2.1.3.js";
script.type = "text/javascript";
document.getElementsByTagName("head")[0].appendChild(script);