romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
9 juil. 2007 à 20:03
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 2014
-
11 juil. 2007 à 09:12
Bonjour
voila je me demandais s'il exisait un moyen de trier des noeuds xml
- nous savons trier une liste d'objets avec IComparer ou IComparable
- nous savons trier des données provenant d'une base directement avec la requete SQL et la clause order by
mais pour une liste de noeuds xml exitse t'il un moyen de trier cette liste(de XmlElement par exemple) par rapport à un noeud
simplement mon raisonnement est simple ce que nous avons besoin en general c'est de filtrer et trier une liste/collection (+ mettre à jour bien entendu) , aussi si je me demandes cela c'est parce que avec les noeuds Xml je ne sais que filtrer par l'intermediaire d'une expression XPath mais si on savait comment trier cette collection de noeuds on pourrait envisager carrement de se passer de la couche metier intermediaire(et oui pourquoi recopier deux fois des mêmes données vues qu'elles existent deja dans le fichier Xml)
trier avec une expression Xpath ?? non je doutes que ce soit possible ?
ou bien sur en utilisant un algorithme de trie
qu'en pensez vous ? est ce que ce serait une bonne idée d'essayer de se passer de la couche metier pour attaquer directement la ou se trouvent les données ?
Se poser les bonnes questions ;)
apporter les réponses
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 9 juil. 2007 à 20:26
Salut,
Tu peux faire une classe permettant de comparer les noeuds, ici je t'en ai fais une comparant les noeuds selon un attribut choisi :
class XmlNodeComparer : Comparer<System.Xml.XmlNode>
{
string attributeToCompare;
public string AttributeToCompare
{
get { return attributeToCompare; }
set { attributeToCompare = value; }
}
public XmlNodeComparer(string AttributeToCompare)
{
attributeToCompare = AttributeToCompare;
}
public override int Compare(System.Xml.XmlNode x, System.Xml.XmlNode y)
{
return (int.Parse(x.Attributes[attributeToCompare].Value) -
int.Parse(y.Attributes[attributeToCompare].Value));
}
}
Puis tu peux l'utiliser très simplement :
System.Xml.XmlNodeList xmlNodeList;
//Initialisation de xmlNodeList
List nodeList = new List(xmlNodeList.GetEnumerator());
nodeList.Sort(new XmlNodeComparer("order"));
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 9 juil. 2007 à 22:06
Sans faire de teste et sans savoir si c'est possible de faire exactement ce que tu veux, tu peux regarder du côté de AddSort, je sais plus exactement ce que fait cette fonction :
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 10 juil. 2007 à 09:05
oui ce serait une trés bonne idée
le seul hic que je vois à l'utilisation des variables xslt et le tri c'est qu'apparemment ils sont utilisables qu'avec un XPathNavigator et par un simple XmlDocument ?
Se poser les bonnes questions ;)
apporter les réponses
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 10 juil. 2007 à 20:19
Voui, mais est ce vraiment un problème... ^^
Sinon regarder aussi du côté de la librairie Mvp.Xml, il doit y avoir des choses sympathiques sur le sujet là dedans.
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 11 juil. 2007 à 00:14
Oui 'ai regardé un peu plus Mvp.xml hier soir ca a l'air pas mal
sinon connaitriez vous des tools qui facilitent enormement la saisie et le test des expressions Xpath
genre on commence à saisir et une liste en auto completion est proposée contenat a la fois les elements,attributs possibles a l'emplacement courant mais proposant egalement toutes les methodes(ex : StartsWith) ?
++
Se poser les bonnes questions ;)
apporter les réponses
romagny13
Messages postés687Date d'inscriptionlundi 10 janvier 2005StatutMembreDernière intervention27 août 20143 11 juil. 2007 à 09:12
A oui il y a XPathBuilder qui est effectivement pas mal je me souvenais pas qu'il avait l'auto completion
sinon j'ai telecharge XPathMania,Visual XPath
mais celui qui se rapproche le plus de ce que je recherche est payant
bon j'avais commencé a créer une petite tool pour Xpath dans le generateur de code linq to xml, et si j'avais le niveau suffisant je developperais un petit outil pour cela parce que cela peut se reveler tres pratqiue et terriblement efficace surtout lorsque l'on a les methodes de proposer ,exemple je saisis "[" toutes les methodes sont proposées avec en tooltip la syntaxe
mercii
++
Se poser les bonnes questions ;)
apporter les réponses