javascript - 如何用Prototype解析XML字符串?

标签 javascript json prototypejs

我有一个字符串<ul><li e="100" n="50">Foo</li><li e="200" n="150">Bar</li></ul>在客户端我必须将其转换为 JSON。类似 {data:['Foo','Bar'],params:['100;50','200;150']}

我在 here 中找到了一个很好的方法来实现它所以我的代码应该是这样的

var $input = $(input);
var data = "data:[";
var params = "params:[";

var first = true;
$input.find("li").each(function() {
    if (!first) {
        data += ",";
        params += ",";
    } else {
        first = false;
    }
    data += "'" + $(this).text() + "'";
    var e = $(this).attr("e");
    var n = $(this).attr("n");
    params += "'" + e + ';' + n + "'";
});

return "{data + "]," + params + "]}";

但问题是我不能使用jquery。我怎样才能用原型(prototype)做同样的事情?

最佳答案

您想使用 DOM 解析器:

https://developer.mozilla.org/en/DOMParser

类似这样的事情...

var xmlStr = '<ul><li e="100" n="50">Foo</li><li e="200" n="150">Bar</li></ul>';

var parser = new DOMParser();
var doc = parser.parseFromString(xmlStr, "application/xml");

var rootElement = doc.documentElement;
var children = rootElement.childNodes;

var jsonObj = {
    data: [],
    params: []
};

for (var i = 0; i < children.length; i++) {
    // I realize this is not how your implementation is, but this should give
    // you an idea of how to work on the DOM element
    jsonObj.data.push( children[i].getAttribute('e') );
    jsonObj.params.push( children[i].getAttribute('n') );
}

return jsonObj.toJSON();

此外,不要手动构建 JSON 字符串。填充一个对象,然后JSON-encode它。

编辑:请注意,您需要先测试 DOMParser,然后才能使用它。检查here了解如何做到这一点。抱歉,没有 W3Schools 链接。

关于javascript - 如何用Prototype解析XML字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840196/

相关文章:

javascript - 原型(prototype) JavaScript 日历,可自定义单元格渲染,如 YUI 日历

javascript - AdonisJs 分享会

JavaScript 从未执行的分支提升变量

javascript - 使表格适合屏幕? (JQueryMobile/ Cordova )

php - 我在哪里可以学习如何进行实时查询?

javascript - 如何对 JSON 数据使用 String.prototype 函数?

javascript - 为什么在我的项目中禁用了 greenkeeper ..?

javascript - 通过json访问一个URL,在chrome中可以通过提供User/Pass打开

javascript - 将选项从 <select> 移动到 <select multiple> - 选项选择属性被破坏?

javascript - mouseover 和 mouseout 事件触发 child