网站首页 手机版
 注册 登录
您现在的位置: 畅无忧设计 >> 网站建设 >> Javascript >> 正文
最新文章
· Jquery插件原来就这么简单
· 21个值得收藏的Javascript技巧
· JavaScript中的原型和继承
· JS对select动态添加options操作
· js获取表单值的两种方法
· 关闭网页弹出加入收藏,刷新不弹出加
· 如何判断是关闭还是刷新网页
· 命名JavaSript函数名时注意
· javascript中的setAttribute()浏览器
· JS实现IE6下PNG图片透明且链接正常的
热门文章
 JS实现两个页面传值
 实现对文字自动排版的网页特效
 JS获取指定ID标签之间的内容
 JS实现IE6下PNG图片透明且链接正常
 JS计数器
 通过js改变页面中元素的内容
 js切换文本框的只读与可写的动态切
 JS实现cookie的添加、获取、删除
 js在线编辑器常用函数大全
 javascript中的setAttribute()浏览
相关文章
没有相关文章
使用JS查找XML内部节点与属性值
来源:JavaEye 更新时间:2010/8/8 22:56:22 阅读次数:
字体:[ ] 我要投稿

最近做项目,使用js对xml进行解析,其中需要对传入的值在xml中进行查询,从而查找具有此属性节点的其余属性,上网查了一下,引用xml两种不同模式,分别做说明,直接上代码:

1.html:
<html>
<script>
function createXML(){
   var xmlVersion=["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",
                   "MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XmlDoc"];
   for(var i=0;i<xmlVersion.length;i++){
     try{
       var xmlDoc=new ActiveXObject(xmlVersion[i]);
       return xmlDoc;
      }catch(Exception){
        //不处理
      }
   }
   throw new Error("系统没有安装MSXML");
}
var xmldoc=createXML();
xmldoc.async=false;
xmldoc.load("2.xml");
function byname(){
var temp="";
var str=document.all.bookname.value;
var reg="/bookstore/book[name='"+str+"']";
var target=xmldoc.documentElement.selectNodes(reg);
alert("查询长度为:"+target.length);
if(target.length==0){
   alert("没有找到与此匹配的书名");
}else{
   for(var i=0;i<target.length;i++){
     temp+="书名:"+target[i].childNodes[0].text+"<br>";
     temp+="价格:"+target[i].childNodes[1].text+"<br>";
     temp+="作者:"+target[i].childNodes[2].text+"<br>";
   }
  document.getElementById("sp").innerHTML=temp;
}
}
function byprice(){
var temp="";
var str=document.all.bookprice.value;
var reg="/bookstore/book[price<"+str+"]";
var target=xmldoc.documentElement.selectNodes(reg);
if(target.length==0){
   alert("没有找到与此匹配的书名");
}else{
   for(var i=0;i<target.length;i++){
     temp+="书名:"+target[i].childNodes[0].text+"<br>";
     temp+="价格:"+target[i].childNodes[1].text+"<br>";
     temp+="作者:"+target[i].childNodes[2].text+"<br>";
   }
   document.getElementById("sp").innerHTML=temp;
}
}
function byauthor(){
var temp="";
var str=document.all.bookauthor.value;
var reg="/bookstore/book[author='"+str+"']";
var target=xmldoc.documentElement.selectNodes(reg);
if(target.length==0){
   alert("没有找到与此匹配的书名");
}else{
   for(var i=0;i<target.length;i++){
     temp+="书名:"+target[i].childNodes[0].text+"<br>";
     temp+="价格:"+target[i].childNodes[1].text+"<br>";
     temp+="作者:"+target[i].childNodes[2].text+"<br>";
   }
  document.getElementById("sp").innerHTML=temp;
}
}

function byBid()
{
  var tmep = "";
  var str= document.getElementById("bid").value;
  var reg = "/bookstore/shape[text()="+str+"]"; //注意此处Xpath设置与以上不同
  var tar = xmldoc.documentElement.selectNodes(reg);
   alert("查询长度为:"+tar.length);

   for(var i=0;i<tar.length;i++)
   {
       var sss = tar[i].getAttribute("value");
       alert(sss);
    }
   
}
</script>
<body>
<center>
按书名查找:<input type=text name="bookname">
<input type=button value="开始查找" onclick="byname()"><br>
按价格查找:<input type=text name="bookprice">
<input type=button value="开始查找" onclick="byprice()"><br>
按作者查找:<input type=text name="bookauthor">
<input type=button value="开始查找" onclick="byauthor()"><br>
自定义查找:<input type="text" name="bid" id="bid">
<input type="button" value="开始查找" onclick="byBid()"><br>
<span id="sp"></span>
</center>
</body>
</html>

2.xml:
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<bookstore>
   <book>
     <name>三国演义</name>
     <price>350.00</price>
     <author>陶清华</author>
   </book>
   <book>
     <name>西游记</name>
     <price>450.00</price>
     <author>郭勇</author>
   </book>
  <shape id="2" name="video_pt" value="视频表">23</shape>
  <shape id="3" name="asj_pt" value="案事件表">322</shape>
</bookstore>

注意,此处应用两种不同表现的xml模式,分别使用不同的Xpath,野人献曝,希望对需要的同志有所帮助。

  • 上一篇文章:
  • 下一篇文章:
  • 关于我们 - 联系我们 - 广告服务 - 在线投稿 - 友情链接 - 网站地图 - 版权声明
    CopyRight 2008-2010, CWYDESIGN.COM - 畅无忧设计, Inc. All Rights Reserved
    滇ICP备09005765号