我有XML:
<point>
...
<longitude>34.123123</longitude>
</point>
<point>
...
<longitude>11.12534534</longitude>
</point>
<point>
...
<longitude>32.567653</longitude>
</point>
<point>
...
<longitude>33.345345</longitude>
</point>
...
任务:
在javascript中获取<longitude>
的值(在变量中)。
哪种方式最纯粹?
没有XSLT就可以做到(没有制作虚拟元素)?
更新
我的解释非常糟糕。
XML是在服务器上动态形成的,然后在同一个地方传递XSLT,结果是在浏览器中发送的HTML。
可能在HTML中,有必要制作一个虚构的元素来记下经度的值,然后从页面上的元素中读出javascript中的值。
如何以不同的方式制作?
答案 0 :(得分:4)
jQuery怎么样?
$.ajax({
type: "GET",
url: "relative/path/to/yourfile.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('point').each(function(){
var longitude = $(this).find('longitude').text()
// doing something with your longitude variable
});
}
});
答案 1 :(得分:2)
对XML源进行AJAX调用可以帮助您。但这取决于您存储xml文档的位置。
查看以下链接,尤其是XMLHttpRequest部分:
答案 2 :(得分:2)
假设您有一个字符串,请使用XML parser。如果它是一个文件,AJAX应该为你解析繁重的工作。这是一个例子:http://jsfiddle.net/Jr5ga/
/**
* Parse XML from string
* Abstract away browser differences
*/
function parseXML(text) {
if (window.DOMParser) {
parser = new DOMParser();
doc = parser.parseFromString(text,"text/xml");
}
else { // Internet Explorer
doc = new ActiveXObject("Microsoft.XMLDOM");
doc.async="false";
doc.loadXML(text);
}
return doc;
}
要从此XML文档获取经度值,可以使用getElementsByTagName
函数。选择所有经度节点后,循环遍历它们并获取每个节点中的文本内容,调用childNodes[0]
,因为它只有1个子节点 - 文本节点,并在文本节点上调用nodeValue
以获取作为字符串的值。
var xml = parseXML(string);
var longitudes = xml.getElementsByTagName("longitude");
var result = [];
for(var i = 0; i < longitudes.length; i++) {
// add longitude value to "result" array
result.push(longitudes[i].childNodes[0].nodeValue);
}