[ASP and XML] XmlDocument et XPathExpression
Bonjours,
J'ai un fichier XML que je veux trier avant de chercher les element precedentes et suivante de l'element courante
Mon idée consiste à recuperer une partie du document suivant un premier critère (de selection et trie) avec XPathDocument
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
XPathExpression expr = null;
expr = nav.Compile("/CATALOG/PRODUCTS/PROD[number(concat(substring
(@RELEASED,1,4), substring(@RELEASED,6,2), substring(@RELEASED,
9,2))) <= " + DateTime.Now.ToString("yyyyMMdd") + " and
@RESTRICTED=0]");
expr.AddSort("@DATE1", XmlSortOrder.Descending, XmlCaseOrder.None,
String.Empty, XmlDataType.Number);
expr.AddSort("@DATE2", XmlSortOrder.Descending, XmlCaseOrder.None,
String.Empty, XmlDataType.Number);
XmlDocument catalog = GetXML();
XPathNavigator nav = catalog.CreateNavigator();
// Maintenant j'applique mon critère (qui est une XPathExpression sur le doc)
XPathDocument doc = new XPathDocument(new XmlNodeReader
(catalog.SelectNodes(expr))); |
J'ai une erreur avec l'instruction :
XPathDocument doc = new XPathDocument(new XmlNodeReader
(catalog.SelectNodes(expr)));
Comment peut-on proceder ?
pour le reste du code, j'applique une seconde critère pour recuprer le noeud courrant afin de chercher le precedent et le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
int current = ...
XPathNodeIterator ite = nav.Select("/catalog/product/prod
[@id="+current+"]");
ite.MoveNext();
string value = ite.Current.Value;//current value
ite.Current.MoveToNext();
string next = ite.Current.Value;//next value
if (value != next)
{
ite.Current.MoveToPrevious();
ite.Current.MoveToPrevious();
}
else
{
ite.Current.MoveToPrevious();
next = null;
}
string previous = ite.Current.Value;//previous value |
Merci pour tout aide