我正在尝试根据选择器从xml查询节点,如果我的select on中有逗号,则domquery会抛出错误!
问题: Ext.DomQuery.select(“root / I [a ='abc,d']”,resp.responseXML);
以下是我的示例代码:
Ext.onReady(function () {
Ext.Ajax.request({
url : 'sample.xml',
success : function (resp, e) {
//var a = Ext.DomQuery.select("root/I[a='abc']", resp.responseXML);
var b = Ext.DomQuery.select("root/I[@a='abc']", resp.responseXML);
var c = Ext.DomQuery.select("root/I[a='abc'd']", resp.responseXML);
var d = Ext.DomQuery.select("root/I[a='abc@d']", resp.responseXML);
//All the above are working fine
//Below line is not at all working
var d = Ext.DomQuery.select("root/I[a='abc,d']", resp.responseXML);
// throwing error as : 'Error parsing selector, parsing failed at "' + path + '"'; at line 1126 in ext-all-debug.js
},
failure : function (resp, e) {
debugger;
}
});
});
我的xml如下:
<root>
<I a="abc"/>
<I a="abc'd"/>
<I a="abc@d"/>
<I a="abc,d"/>
<I a="abc!d"/>
</root>
我在代码中使用了这个选择器很多地方,这只是一个示例。此选择器(此处“abc,d”)始终来自变量,它是动态的。没有人知道逗号何时到来以及何时没有。如何处理这个问题?有没有解决这个问题?
答案 0 :(得分:0)
这不行。我已经尝试了很多。最后决定在domquery中使用以开头并遍历结果数组以找到完全匹配。请参阅以下示例
var d = Ext.DomQuery.select("root/I[a^='abc']", resp.responseXML);
var selectedNode = null;
for(var index = 0; index < d.length; index++){
if(d[index].getAttribute('a') == 'abc,d'){
selectedNode = d[index];
}
}
console.log(selectedNode);
如果您希望完全匹配在数组中,请使用以下示例
var selectedNode = new Array();
for(var index = 0; index < d.length; index++){
if(d[index].getAttribute('a') == 'abc,d'){
selectedNode.push(d[index]);
}
}
console.log(selectedNode);