以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  请高手帮忙写一个xpath  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=74144)


--  作者:gaoj2008
--  发布时间:4/13/2009 8:37:00 PM

--  请高手帮忙写一个xpath
XML文件如下:
<ROOT>
<A>
    <AA>
       abc
    </AA>
</A>
<B>
</B>
</ROOT>

想取到包含AA子元素且AA子元素的值为abc的节点,即取到A节点,请问Xpath该怎么写?


--  作者:hexun831012
--  发布时间:4/13/2009 10:13:00 PM

--  
A[AA = 'abc']
--  作者:Qr
--  发布时间:4/13/2009 11:24:00 PM

--  
以下是引用hexun831012在2009-4-13 22:13:00的发言:
A[AA = 'abc']


正解
--  作者:gaoj2008
--  发布时间:4/14/2009 4:22:00 PM

--  
我使用的xml文件这样直接写一直找不到,必须这样写才行:
如我想找到A节点,Xpath得这样写 : /*[name()='Root']/*[name()='A']
大家知道为什么吗?是不是由于命名空间的原因啊?

由于这样找出得节点为所有的A节点,再加"包含AA子元素且AA子元素的值为abc的节点"这样一个条件,该怎么写呢?


--  作者:hexun831012
--  发布时间:4/14/2009 4:25:00 PM

--  
/*[name()='Root']/*[name()='A']不就=Root/A/吗
我知道你错在那了,你没搞清楚从哪个节点开始XPath,XPath是相对的
--  作者:gaoj2008
--  发布时间:4/14/2009 4:51:00 PM

--  
ROOT不就是根节点吗?
我认为取A节点应该这样写:  /ROOT/A,可是这样写取不到,只好按照上述带星花的形式写了.
--  作者:hexun831012
--  发布时间:4/14/2009 4:53:00 PM

--  
都说Xpath是相对的,你当前节点是Root,那么取A就是A
如果你当前是文档,那就是Root/A
如果你当前就是A,那就是.
--  作者:gaoj2008
--  发布时间:4/14/2009 5:13:00 PM

--  
我用的是dom4j,也就是说,
如果我当前是:document,那么取A节点就是:document
     .selectNodes("Root/A");
如果我当前是:root,那么取A节点就是:root
     .selectNodes("A");

取当前节点的子节点不用加"/"吗?



--  作者:hexun831012
--  发布时间:4/14/2009 5:15:00 PM

--  
在文档时就是Root/A
在Root就直接是A不错
第一个子节点时A[position() = 1],可以简写为A[1]

--  作者:gaoj2008
--  发布时间:4/14/2009 5:22:00 PM

--  
以下是引用hexun831012在2009-4-14 17:15:00的发言:
在文档时就是Root/A
在Root就直接是A不错
第一个子节点时A[position() = 1],可以简写为A[1]


这样啊,我去试,非常感谢.首次深入XML,还请多多指教.


--  作者:hexun831012
--  发布时间:4/14/2009 5:23:00 PM

--  
分内之事,不必客气
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
250.000ms