Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
| XPathDocument oXPathDocument = new XPathDocument(System.IO.Path.Combine(Environment.CurrentDirectory, "Contacts.xml")); XPathNavigator oXPathNavigator = oXPathDocument.CreateNavigator(); XPathExpression oXPathExpression = oXPathNavigator.Compile("/Contacts/Contact"); oXPathExpression.AddSort("FirstName", XmlSortOrder.Descending, XmlCaseOrder.None, "", XmlDataType.Text); XPathNodeIterator oXPathNodeIterator = oXPathNavigator.Select(oXPathExpression); while (oXPathNodeIterator.MoveNext()) { listBox1.Items.Add(oXPathNodeIterator.Current.Value); } |
| XPathDocument oXPathDocument = new XPathDocument(System.IO.Path.Combine(Environment.CurrentDirectory, "Contacts.xml")); XPathNavigator oXPathNavigator = oXPathDocument.CreateNavigator(); // XPathExpression XPathExpression oXPathExpression = oXPathNavigator.Compile("/Contacts/Contact"); oXPathExpression.AddSort("Other/Age", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); XPathNodeIterator oXPathNodeIterator = oXPathNavigator.Select(oXPathExpression); while (oXPathNodeIterator.MoveNext()) { listBox1.Items.Add(oXPathNodeIterator.Current.Value); } |
| XPathDocument oXPathDocument = new XPathDocument(System.IO.Path.Combine(Environment.CurrentDirectory, "Contacts.xml")); XPathNavigator oXPathNavigator = oXPathDocument.CreateNavigator(); // XPathExpression XPathExpression oXPathExpression = oXPathNavigator.Compile("/Contacts/Contact"); oXPathExpression.AddSort("@ID", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); XPathNodeIterator oXPathNodeIterator = oXPathNavigator.Select(oXPathExpression); while (oXPathNodeIterator.MoveNext()) { listBox1.Items.Add(oXPathNodeIterator.Current.Value); } |
| oXPathExpression.AddSort("@ID", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); |
| public System.Collections.IEnumerable GetContacts(string FirstName) { XPathExpression oXPathExpression = System.Xml.XPath.XPathExpression.Compile("/Contacts/Contact[starts-with(FirstName, $firstname)]"); CustomContext oCustomContext = new CustomContext(); oCustomContext.AddVariable("firstname", FirstName); oXPathExpression.SetContext(oCustomContext); oXPathExpression.AddSort("FirstName", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text); // iteration (les noeuds sont donc ici deja filtres et triés) System.Xml.XPath.XPathNavigator oXPathNavigator = oXPathDocument.CreateNavigator(); System.Xml.XPath.XPathNodeIterator oXPathNodeIterator = oXPathNavigator.Select(oXPathExpression); while (oXPathNodeIterator.MoveNext()) { yield return oXPathNodeIterator.Current.Value; } } |
| <?xml version="1.0" encoding="utf-8" ?> <Contacts> <Contact ID="1"> <FirstName>eric</FirstName> <LastName>Dupond</LastName> <Gender>H</Gender> <Other> <Age>32</Age> </Other> </Contact> <Contact ID="58"> <FirstName>Jeanne</FirstName> <LastName>Dupond</LastName> <Gender>F</Gender> <Other> <Age>20</Age> </Other> </Contact> <Contact ID="30"> <FirstName>henri</FirstName> <LastName>Dumond</LastName> <Gender>H</Gender> <Other> <Age>15</Age> </Other> </Contact> <Contact ID="45"> <FirstName>Paul</FirstName> <LastName>Durand</LastName> <Gender>F</Gender> <Other> <Age>28</Age> </Other> </Contact> <Contact ID="5"> <FirstName>Luc</FirstName> <LastName>D'urand</LastName> <Gender>H</Gender> <Other> <Age>19</Age> </Other> </Contact> </Contacts> |