关于XPath的一个有趣问题

最近在做实验过程中需要查询xml数据,取得某个属性的唯一值。这里采用XPath进行查询,对于XPath可是初次接触,因此碰到一些难度。网上搜了点资料就开始做实验了。现在W3C组织推出了XPath1.0和XPath2.0,我是采用ASP.NET2.0做实验的,由于是第一次接触,因此不清楚ASP.NET2.0支持哪个版本的XPath。无所谓,先试XPath2.0,再试XPath1.0,毕竟XPath2.0比XPath1.0简单多了。
先列出xml文件部分数据
<? xml version="1.0" encoding="utf-8"  ?>
< File >
     
< FileNode   Name ="BGS"  Type =""  Path ="/"   />
     
< FileNode  Name ="DaoShiJT"  Type ="aspx"  Path ="/BGS"    />
     
< FileNode  Name ="DianFei"  Type ="aspx"  Path ="/BGS"    />
</ File >
在文件中拖入一个XmlDataSource,输入XPath。
XPath2.0 distinct-values(/File/FileNode/@Path),测试失败,提示没有distinct-values方法
XPath1.0 preceding-sibling::FileNode | ../preceding-sibling::File/FileNode)/@Path)]/@Path,测试没错误,但怎么也查不到纪录。难道这个语句错了,在XmlSpy软件中测试,无论XPath2.0还是XPath1.0语句,测试都是期望的结果。郁闷了好长时间,将前台页面中的XmlDataSource移到后台,代码如下:
1         XmlDocument doc  =   new  XmlDocument();
2          doc.Load(Request.PhysicalApplicationPath + @" File.xml " );
3          XmlNodeList nodeList  =  doc.DocumentElement.SelectNodes( @" /File/FileNode[not(@Path = (preceding-sibling::FileNode | ../preceding-sibling::File/FileNode)/@Path)]/@Path " );
4           this .DropDownList1.DataSource  =  nodeList;
5          DropDownList1.DataTextField  =   " Value " ;
6          DropDownList1.DataValueField  =   " Value " ;
7          DropDownList1.DataBind();
测试成功,得到正确的值了。
根据实验发现
1、ASP.NET还不支持XPath2.0
2、对于复杂的XPath,前台好像不怎么支持
当然这是我一己之见,还望各高手指点。

转载于:https://www.cnblogs.com/MagicBoy/archive/2007/09/22/897427.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值