我正在寻找一种方案,在该方案中我要“使用”一个xml / json文档并从上述日期开始构建一些视觉元素。
例如,一段时间内的预订清单。可以说数据将包含
<unit>
<booked>
<pic>
<booked range>
我不确定的是如何从访问查询字符串到捕获返回的xml。这似乎很简单,但是我似乎无法理解从Java脚本访问返回的XML。
更多信息:
我正在构建一个移动应用程序,它将显示从XML检索的数据。 (我想从应用程序运行url / query字符串,以生成自定义xml文档,并读取返回的XML数据(不显示网页)
有什么建议吗?
最佳答案
概要
通过ajax调用收集xml。
Xml响应以dom树(已解析)或词汇表示形式(文本)提供
让回调处理程序处理您的xml并与dom交互
处理xml的选项:
XPath
Xslt
DOM功能
字符串操作
字符串解析(可能没有意义,除非您对解析有特殊要求)
码
使用XMLHttpRequest的纯Javscript解决方案(文档:例如MDN reference,MDN 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。
注意与警告
该代码示例使用了由美国NIH提供的返回xml数据的公共Web服务。这是随机选择的,仅用于拥有有效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);
关于javascript - 生成远程XML,并使用javascript从网页使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29251647/