读书人

这句话如何解释呢?(quot;descendant:book[

发布时间: 2011-12-13 21:22:18 作者: rapoo

这句话怎么解释呢?("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
如果是[@]就变成查节点属性了。

读书人网 >C#

热点推荐