当前位置: 代码迷 >> ASP.NET >> XPath中文有关问题
  详细解决方案

XPath中文有关问题

热度:9808   发布时间:2013-02-25 00:00:00.0
XPath中文问题
代码区一 
var drp2 = document.getElementById("ctl00$content$city"); //使用了母版,获取一个DropDownList对象 
for(var i = 0;i <=drp2.options.length -1;i++){  
  drp2.remove(i);//删除该DropDownList的所有options 



代码区二 

var result=" <NewDataSet> <Table> <city>潮洲 </city> </Table> <Table> <city>北京 </city> </Table> <Table> <city>上海 </city> </Table> </NewDataSet>"; 
oDoc.loadXML(result); 
  items = oDoc.selectNodes("//NewDataSet/Table"); 
  for (var item = items.nextNode(); item; item = items.nextNode()){  
  var node = item.selectSingleNode("//city"); 
  var city = node.nodeTypedValue; 
  var newOption = document.createElement("OPTION");  
  newOption.text = city;  
  newOption.value = city;  
  drp2.options.add(newOption);  
  }  


观看以上代码,两代码区都在同一个文件中 
问题一:我的DropDownList ctl00$content$city的值为三个潮州而不是潮州、北京、上海,为什么? 
问题二:当result的值改动之后(页面没有刷新),例如第二层改为 <Table> <city>广东 </city> </Table> <Table> <city>青岛 </city> </Table>我的DropDownList ctl00$content$city并没有像预期的那样删掉之前的三个潮州再加上广东和青岛,而是三个潮州再加两个广东,为什么?

------解决方案--------------------------------------------------------
确实你楼主xpath 问题
参考修改

JScript code
var result=" <NewDataSet> <Table> <city>潮洲 </city> </Table> <Table> <city>北京 </city> </Table> <Table> <city>上海 </city> </Table> </NewDataSet>";     oDoc=createDocument();        oDoc.loadXML(result);                 items  =  oDoc.selectNodes("//NewDataSet/Table");                 for  (var  item  =  items.nextNode();  item;  item  =  items.nextNode()){            var  node  =  item.selectSingleNode[color=#FF0000]("city"[/color]);           var city = node.nodeTypedValue;           var  newOption  =  document.createElement("OPTION");              alert(city);
------解决方案--------------------------------------------------------
var node = item.selectSingleNode("//city"); 

修改为

var node = item.selectSingleNode("city");
即可.
 

------解决方案--------------------------------------------------------
for(var i = 0;i <=drp2.options.length -1;i++){
drp2.remove(i);//删除该DropDownList的所有options 
}

可以简化为
drp2.innerHTML ="";

第二,建议你用 alert 调试一下 items.nextNode(); 取到的是什么值
另,代码可优化为
for (var i = 0; i<items.childNodes.length; i++)
{
var city = items[i]["city"].innerText; 
drp2.options.add(new Option(city,city));
}