Я хочу отфильтровать 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>
Мне нужна фильтрация на основе строки запроса, например
если
- ? Food = Food1 (должно отображаться все)
- ? Food = Food1 & Cat = Cat1 (должно отображаться в последнюю очередь 2)
- ? Cat = Cat1 & Description = Who is (display last1)
- ? Food = Food1 & Cat = Cat1 & Description = Кто голоден (3-й)
Я хочу отобразить это в повторителе. Я использую 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) я знаю, что могу написать подобное для других трех, но я хочу, чтобы это было динамично. Как у нас это в Амазонке. Фильтр просто добавьте в соответствии с выбором, который вы делаете. Так что, возможно, нет строки запроса, может быть 1, может быть 2, поэтому мне нужно проверить это
и затем я связываю этот итератор с повторителем, используя datatable
Есть идеи, как этого добиться?