日期:2014-05-19  浏览次数:20898 次

这句话怎么解释呢?("descendant::book[author/last-name='Austen']")
完整点的代码如下:

XmlDocument   doc   =   new   XmlDocument();
doc.Load( "XMLFile1.xml ");
XmlNode   root   =   doc.DocumentElement;
XmlNodeList   nodeList   =   root.SelectNodes( "descendant::book[author/last-name= 'Austen '] ");

我不明白SelectNodes的参数是怎么来解释的,比如:
descendant是什么意思?
descendant::又是什么意思?
::前面都可能会出现什么样的单词?
book后面的[是什么意思?

-----------------------------------
XMLFile1.xml内容如下:

<?xml   version= "1.0 "?>
<!--   A   fragment   of   a   book   store   inventory   database   -->
<bookstore   xmlns:bk= "urn:samples ">
<book   genre= "novel "   publicationdate= "1997 "   bk:ISBN= "1-861001-57-8 ">
<title> Pride   And   Prejudice </title>
<author>
<first-name> Jane </first-name>
<last-name> Austen </last-name>
</author>
<price> 24.95 </price>
</book>
<book   genre= "novel "   publicationdate= "1992 "   bk:ISBN= "1-861002-30-1 ">
<title> The   Handmaid 's   Tale </title>
<author>
<first-name> Margaret </first-name>
<last-name> Atwood </last-name>
</author>
<price> 29.95 </price>
</book>
<book   genre= "novel "   publicationdate= "1991 "   bk:ISBN= "1-861001-57-6 ">
<title> Emma </title>
<author>
<first-name> Jane </first-name>
<last-name> Austen </last-name>
</author>
<price> 19.95 </price>
</book>
<book   genre= "novel "   publicationdate= "1982 "   bk:ISBN= "1-861001-45-3 ">
<title> Sense   and   Sensibility </title>
<author>
<first-name> Jane </first-name>
<last-name> Austen </last-name>
</author>
<price> 19.95 </price>
</book>
</bookstore>


------解决方案--------------------
//CCC/descendant::DDD

选择所有以CCC为祖先元素的DDD元素


------解决方案--------------------
/descendant::*

选择文档根元素的所有后代.即所有的元素被选择


------解决方案--------------------
楼主对XPath不熟?看看教程
http://www.zvon.org/xxl/XPathTutorial/Output_chi/example1.html
------解决方案--------------------
XPath...

descendant 是 XPath 正向轴...descendant 返回上下文节点的所有后代...

相对路径表达式 descendant::book[author/last-name= 'Austen '] 指定了一个轴 (descendant) 和一个节点测试(book)和谓词([author/last-name= 'Austen '])...结果是所有子节点author中子节点last-name的值为 'Austen '的book节点...
------解决方案--------------------
相当于bookstore/book[author/last-name= 'Austen ']
[]的意思为查找book里面满足author的last-name的节点值为Austen
如果是[@]就变成查节点属性了。