获取从XML到JavaScript的变量值。纯粹的方式

时间:2010-04-20 14:15:05

标签: javascript xml xslt variables

我有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中的值。

如何以不同的方式制作?

3 个答案:

答案 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部分:

http://www.w3schools.com/ajax/default.asp

答案 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);
}