我想根据查询字符串过滤XML过滤器基于XML的查询字符串
我的XML是这样
<Categories>
<Category>
<Title>Food1<Title>
<Cat>Cat3</Cat>
<Duration>12/1/2009-12/1/2011</Duration>
<Description>Who is hungry</Description>
<Category>
<Category>
<Title>Food1<Title>
<Cat>Cat2</Cat>
<Duration>12/1/2009-12/1/2011</Duration>
<Description>Who is hungry</Description>
<Category>
<Category>
<Title>Food1<Title>
<Cat>Cat1</Cat>
<Duration>12/1/2009-12/1/2011</Duration>
<Description>Who is hungry</Description>
<Category>
<Category>
<Title>Food1<Title>
<Cat>Cat1</Cat>
<Duration>12/1/2009-12/1/2011</Duration>
<Description>Who is </Description>
<Category>
我想基于内容的过滤查询字符串如 if
- ?食物=食物1(它应该显示所有)
- ?食品=食物1 &猫= CAT1(应该dispalay去年2)
- ?猫= CAT1 &说明=谁是(显示last1)
- ?食品=食物1 &猫= CAT1 &说明=谁是饿了(第三之一)
我想在repeater.I显示此我使用XPathIterator遍历它,并将其绑定到中继器。
我的代码到目前为止是这样的
string _Cat = HttpContext.Current.Request.QueryString["Cat"].ToString();
string _description = HttpContext.Current.Request.QueryString["description"].ToString();
string _food = HttpContext.Current.Request.QueryString["food"].ToString();
XmlDocument doc = new XmlDocument();
doc.Load("/Finder.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expression = nav.Compile("/Categories/Category[Cat='_Cat and title='_food' and Description='_description']/*");
XPathNodeIterator iterator = nav.Select(expression);
//但这只能解决案例4)我知道我可以写其他三个类似的,但我想这件事情是动态的。就像我们在亚马逊一样。过滤器只是根据选择你让it.so可能没有查询字符串添加,可能是1,可能是2,所以我需要检查对
,然后即时通讯结合这个迭代器来使用转发器的数据表
任何想法如何实现这一目标?
我想补充一点,f您使用此解决方案,你必须处理的查询字符串,以防止XPath注入传递的值。 – 2009-12-24 18:43:41
感谢罗兰的工作精细.... – 2009-12-24 20:47:54