Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Prototype解析XML字符串?_Javascript_Json_Prototypejs - Fatal编程技术网

Javascript 如何使用Prototype解析XML字符串?

Javascript 如何使用Prototype解析XML字符串?,javascript,json,prototypejs,Javascript,Json,Prototypejs,我有一个字符串FooBar,在客户端我必须将其转换为JSON。类似于{data:['Foo','Bar',params:['100;50','200;150']} 我找到了一个很好的方法来实现它,所以我的代码应该是这样的 var $input = $(input); var data = "data:["; var params = "params:["; var first = true; $input.find("li").each(function() { if (!first)

我有一个字符串
  • Foo
  • Bar
,在客户端我必须将其转换为JSON。类似于
{data:['Foo','Bar',params:['100;50','200;150']}

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

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执行相同的操作?

为什么要用字符串构建数组对象?为什么不呢

var data = new Array();
var params = new Array();

$$("li").each(function() {
    data.push ($(this).text());
    params.psuh($(this).attr("e") + ";" + $(this).attr("n"));
});


return {data:data.toString(), params:params.toString()};


您想使用DOM解析器:

像这样的

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();
var xmlStr='
  • Foo
  • Bar
    • ; var parser=新的DOMParser(); var doc=parser.parseFromString(xmlStr,“application/xml”); var rootElement=doc.documentElement; var children=rootElement.childNodes; var jsonObj={ 数据:[], 参数:[] }; 对于(变量i=0;i
另外,不要手动构建JSON字符串。填充一个对象,然后单击它


编辑:注意,在使用DOMParser之前,您需要测试它。检查一下你是如何做到这一点的。很抱歉出现W3Schools链接。

是的,但它仍然需要jQuery,我只能使用PrototypeJSTry使用$$,这里有一个参考:$$('div')==document.getElementsByName('div')很抱歉我误解了您的问题。
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();