高分求解:用.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才能与数据库相抗衡,否则就无法查到满意的结果。
...全文
74 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nonesharp 2003-10-21
  • 打赏
  • 举报
回复
这个问题和.NET无关,是XPATH的问题,参阅一下XML文档吧。
两个条件可以用and及or连接(注意,大小写敏感的)。
wincarf 2003-10-21
  • 打赏
  • 举报
回复
参阅一下xpath语法吧,应该可以得不过还是推荐读到dataset中查询
gshope 2003-10-21
  • 打赏
  • 举报
回复
如果把XML文件读到DataSet后再查询,这样就很简单了。
        本课程采用线上录播的形式授课,简短理论部分,着重实战操作。课程特色主要针对《2021年全国职业院校技能大赛:网络系统管理项目-模块B--样题1》做赛题分析并进行实操演练,由于作者本人工作间受限本课程并未把整套赛题做完,只完成了赛题要求的Dcserver之前的知识点讲解,若需要完整的赛题讲解,待作者抽出间录制后,开创新课程。购买前需注意:若需要完整的赛题讲解请勿购买。      本课程针对全国高职院校技能大赛的《网络系统管理》赛项进行赛题知识点做实战操作和理论剖析,具有非常有力的针对性,视频资源全程干货,不浪费一点备赛间,可使新手简单入门。       在临近省赛之际,很多粉丝朋友希望作者把视频多放点出来,我只能把部分录制的视频按照199的价格给到有需要的你。这5个课的价格,结合线下课程本人经过慎重考虑才定的。本想着此视频不收费,但是很多粉丝朋友不能接受,提到最多的是(付出了要有收获,不能白嫖)。        本视频资源供备赛选手做学习参考,望各参赛队取得好成绩。在日后的间里我将多花间精力到这块的视频录制工作来,尽快把赛题的完整视频赶制出来。课程章节如下:1、win2019基础环境2、主备AD域与DNS配置3、WINS及DHCP安装与配置4、DCserver 设置相关安全策略5、DCserver文件共享

110,533

社区成员

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

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

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