高分求解:用.NET中查询XML文档时,支不支持多条件查询,以及支不支持变量

penbamboo 2003-10-21 09:24:10
我有如下两个代码段,

1.一个XML文档,booksort.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>2395</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>ood</last-name>
</author>
<price>1335</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>
另一个是代码段,运行该代码段,可以达到修改XML文档中符合条件的节点
sample.cs
using System;
using System.IO;
using System.Xml;

public class Sample
{
public static void Main()
{

XmlDocument doc = new XmlDocument();
doc.Load("booksort.xml");

XmlNodeList nodeList;
XmlNode root = doc.DocumentElement;

nodeList=root.SelectNodes("descendant::book[author/first-name='Margaret']");

//Change the price on the books.
foreach (XmlNode book in nodeList)
{
book.LastChild.InnerText="15.95";
}

Console.WriteLine("Display the modified XML document....");
doc.Save(Console.Out);

}
}
但是在这个代码sample.cs中nodeList=root.SelectNodes("descendant::book[author/first-name='Margaret']");只有一个查询条件,我希望查询到的结点是不仅符合descendant::book[author/first-name='Margaret']"还要符合descendant::book[author/last-name='Atwood']". 这里我就不知道.NET是否支持多条件查询了,如果支持该如何写。
这里是以节点的多查询为基础,那么它又支不支持多属性的查询呢?
还有在它支不支持变量呢?比如在这个程序中first-name='Margaret',如果first-name会根据需求变化,而给descendant::book[author/first-name='变量']"传送一个变量。这能行吗?

如果这以上的三个功能都无法用这种查询方法实现的话,又该如何去实现它。
各位高手!这个问题似乎有难度!只有达到这样的目的,XML才能与数据库相抗衡,否则就无法查到满意的结果。
...全文
71 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonesharp 2003-10-21
  • 打赏
  • 举报
回复
这个问题和.NET无关,是XPATH的问题,参阅一下XML文档吧。
两个条件可以用and及or连接(注意,大小写敏感的)。
wincarf 2003-10-21
  • 打赏
  • 举报
回复
参阅一下xpath语法吧,应该可以得不过还是推荐读到dataset中查询
gshope 2003-10-21
  • 打赏
  • 举报
回复
如果把XML文件读到DataSet后再查询,这样就很简单了。

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧