如何在C#中使用XPath检索最后一个节点?
我有以下部分xml文件.
<UN N="@U1"> <DT N="24/06/2011"> <PN N="@P1"> <TM N="02:24:11"> <JB T="GP"> <A>notepad</A> <Z>Notepad</Z> <N>Untitled - Notepad</N> <J>1;0;1;1;0;0</J> <C>0.00500;0.09500;0.03500</C> <S>1;0;1;1</S> <P>0;0</P> <F>0</F> </JB> </TM> </PN> </DT> <DT N="23/06/2011"> <PN N="@P1"> <TM N="02:38:49"> <JB T="PAGP"> <A>notepad</A> <Z>Notepad</Z> <N>Untitled - Notepad</N> <J>1;1;1;1;0;1</J> <C>0.00500;0.09500;0.03500</C> <S>1;1;0;0</S> <P>1;1</P> <F>0</F> </JB> </TM> </PN> </DT> ..... ..... </UN> 我需要得到PN N = @ P1的最后一个节点. 样本查询将不胜感激. 提前致谢. 解决方法
last()XPath函数可用于查找节点集的最后一个.所以最后的< PN>具有值为@ P1的attribyte N的节点将是:
//PN[@N='@P1'][position() = last()] .NET代码将取决于您使用的XML API: 编辑(根据评论)返回< F>最后一个< PN>的后代使用上面的属性,其中xDoc是XmlDocument的一个实例: var foundNode = xDoc.SelectSingleNode("//PN[@N='@P1'][position() = last()]/TM/JB/F"); 编辑#2(基于另一个评论):要返回最后一个< PN>其中每个< DT>可以包含多个< DT>所有< DT>中的elements1元素. 使用一些更好的示例XML(见下文)测试它,使用 (//PN[@N='@P1'])[last()] 1为了将来参考,如果可能有多个元素,则在样本中至少显示两个,否则读者将只假设单个实例.同时删除不需要的所有节点(如子节点): 我用于测试的示例XML(添加了x属性,以便在测试时轻松识别所选元素): <UN N='@U1'> <DT N='24/06/2011'> <PN N='@P1' x='#1'/> <PN N='@P1' x='#2'/> <PN N='@P2' x='#3'/> </DT> <DT N='24/06/2011'> <PN N='@P1' x='#4'/> <PN N='@P1' x='#5'/> <PN N='@P2' x='#6'/> </DT> <DT N='24/06/2011'> <PN N='@P3' x='#7'/> <PN N='@P4' x='#8'/> <PN N='@P5' x='#9'/> </DT> </UN> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 【Spring学习笔记三】-依赖注入的两种方式
- PostgreSQL9.1.2存储过程调试
- WPF基础到企业应用系列7――深入剖析依赖属性(一)
- ruby – (Watir webdriver)在OSX 10.9中使用多个显示器时如
- ruby-on-rails – 如何处理RestClient :: ServerBrokeConne
- NoSql数据库CounchDB的介绍
- ruby-on-rails – S3上的Paperclip正在从URL更改文件扩展名
- postgreSQL远程连接出现:Error connecting to server :致命
- vue-resource 拦截器使用详解
- ruby – Can Shoes.rb创建自包含的应用程序?