begin process at 2012 05 27 06:59:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > LECTURE D'UN FICHIER XML AVEC XPATH

LECTURE D'UN FICHIER XML AVEC XPATH


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :.NET Source .NET ( DotNet ) Classé sous :xml, xpath, xpathnavigator, descendant Niveau :Débutant Date de création :07/06/2006 Date de mise à jour :07/06/2006 11:04:48 Vu :20 610

Auteur : Coolpix08

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Voila le code suite à un de mes posts que jme suis répondus sur le forum :)
Ouais je viens d'apprendre qu'à force d'etre désespérer en cherchant...ben on trouve juste apres...

Ca permet d'aller lire une donnée dans un fichier XML à l'aide des XPath
J'ai volontairement mis la version light vu que je dois simplement lire à un endroit précis et rien d'autres à chaque requete

Apres il est facilement imaginable de faire une classe toute simple...

Source

  • Fichier XML :
  • <?xml version='1.0'?>
  • <document lang="FR">
  • <Title>Liste des phrses pour l'application app en Francais</Title>
  • <Page>
  • <Login>
  • <Label1>
  • <init>Login</init>
  • </Label1>
  • <Label2>
  • <init>Mot de Passe</init>
  • </Label2>
  • <Label3>
  • <err1>Mauvais Mot de Passe</err1>
  • <err2>Mauvais Login</err2>
  • </Label3>
  • </Login>
  • </Page>
  • <Alert>
  • <Erreur1>Connection a la base de donnee refuse.</Erreur1>
  • </Alert>
  • </document>
  • Code Source C# :
  • XPathDocument doc = new XPathDocument(Server.MapPath("Francais.Xml"));
  • XPathNavigator nav = doc.CreateNavigator();
  • XPathNodeIterator xit = nav.Select("descendant::Login/Label1/init");
  • xit.MoveNext(); // <--- Super utile sinon il vous mets carrement toutes les reponses du fichiers XML....
  • Label1.Text=xit.Current.Name + " > " + xit.Current.Value;
  • Jme sens généreux aujourd'hui, voici une petite classe pour vous :
  • public class XMLExplorateur
  • {
  • protected XPathDocument docNav;
  • protected XPathNavigator nav;
  • protected XPathNodeIterator xit;
  • protected bool initpath=true;
  • public XMLExplorateur() { }
  • public XMLExplorateur(String path)
  • {
  • try
  • {
  • docNav=new XPathDocument(path);
  • nav=docNav.CreateNavigator();
  • }
  • catch
  • {
  • docNav=null;
  • nav=null;
  • }
  • }
  • public bool Init(String path)
  • {
  • try
  • {
  • docNav=new XPathDocument(path);
  • nav=docNav.CreateNavigator();
  • }
  • catch
  • {
  • docNav=null;
  • nav=null;
  • return false;
  • }
  • return true;
  • }
  • public String ValueOf(String Item)
  • {
  • if (nav==null) return "Erreur Navigateur null";
  • String tmp="descendant::"+Item;
  • try
  • {
  • xit=nav.Select(tmp);
  • if (xit.MoveNext()) tmp=xit.Current.Value;
  • else tmp="null";
  • }
  • catch
  • {
  • tmp="null";
  • }
  • return tmp;
  • }
  • }
  • Exemple d'utilisation :
  • ...
  • protected XMLExplorateur xe=new XMLExplorateur();
  • private void Page_Load(object sender, System.EventArgs e)
  • {
  • xe.Init(Server.MapPath(@"Lang\Francais.Xml"));
  • Label1.Text=xe.ValueOf("Login/Label1/init");
  • }
  • ...
  • Remarque :
  • Attention XML est très capricieux...Il est senssible à la casse (majuscule/minuscule)
  • et en plus, en cas d'erreur Line 1 position 4...Ben il faut simplement retirer le premier espace avec notepad ou wordpad
Fichier XML :
<?xml version='1.0'?>
     <document lang="FR">
         <Title>Liste des phrses pour l'application app en Francais</Title>
         <Page>
             <Login>
                <Label1>
                    <init>Login</init>
                </Label1>
                 <Label2>
                    <init>Mot de Passe</init>
                </Label2>
                 <Label3>
                     <err1>Mauvais Mot de Passe</err1>
                     <err2>Mauvais Login</err2>
                 </Label3>
             </Login>
         </Page>
         <Alert>
             <Erreur1>Connection a la base de donnee refuse.</Erreur1>
         </Alert>
     </document>

Code Source C# :

      XPathDocument doc = new XPathDocument(Server.MapPath("Francais.Xml"));
      XPathNavigator nav = doc.CreateNavigator();
      XPathNodeIterator xit = nav.Select("descendant::Login/Label1/init");
      xit.MoveNext();     // <--- Super utile sinon il vous mets carrement toutes les reponses du fichiers XML....
      Label1.Text=xit.Current.Name + " > " + xit.Current.Value;

Jme sens généreux aujourd'hui, voici une petite classe pour vous :

  public class XMLExplorateur
  {
    protected XPathDocument docNav;
    protected XPathNavigator nav;
    protected XPathNodeIterator xit;
    protected bool initpath=true;

    public XMLExplorateur() { }

    public XMLExplorateur(String path)
    {
      try
      {
        docNav=new XPathDocument(path);
        nav=docNav.CreateNavigator();
      }
      catch
      {
        docNav=null;
        nav=null;
      }
    }

    public bool Init(String path)
    {
      try
      {
        docNav=new XPathDocument(path);
        nav=docNav.CreateNavigator();
      }
      catch
      {
        docNav=null;
        nav=null;
        return false;
      }
      return true;
    }
    
    public String ValueOf(String Item)
    {
      if (nav==null) return "Erreur Navigateur null";
      String tmp="descendant::"+Item;
      try
      {
        xit=nav.Select(tmp);
        if (xit.MoveNext()) tmp=xit.Current.Value;
        else tmp="null";
      }
      catch
      {
        tmp="null";
      }
      return tmp;
    }
  }

Exemple d'utilisation :
...
protected XMLExplorateur xe=new XMLExplorateur();
   private void Page_Load(object sender, System.EventArgs e)
   {
      xe.Init(Server.MapPath(@"Lang\Francais.Xml"));
      Label1.Text=xe.ValueOf("Login/Label1/init");
   }
...
Remarque :
  Attention XML est très capricieux...Il est senssible à la casse (majuscule/minuscule)
  et en plus, en cas d'erreur Line 1 position 4...Ben il faut simplement retirer le premier espace avec notepad ou wordpad

 Conclusion

Voila.
Comme dab si il y a des reflexions ou autres n'hésiter pas...

++


 Historique

07 juin 2006 10:48:50 :
Majuscule + Espace + Ptite Classe rapide
07 juin 2006 11:04:48 :
Gestion erreur -> return "null" si le path est faux

 Sources du même auteur

Source avec Zip Source .NET (Dotnet) INPUTBOX EN C# SUPER SIMPLE

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GESTION DES ASSURANCE DE CLIENTS par okosa
Source avec Zip Source .NET (Dotnet) CSHARP-WINDOWS-PHONE-7-- OPENSTACK NOVA CLIENT :: MADE BY "N... par jalel1234
Source .NET (Dotnet) CLASSE D'ENVOIE DE MAIL PAR SMTPCLIENT par wortmany
Source .NET (Dotnet) SÉRIALISATION (BINAIRE) OBJECT, IMAGE, CLASS ... par wortmany
Source avec Zip Source avec une capture Source .NET (Dotnet) ORIONBANQUE par toutphp

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) VERSIONCHECKER par gta126
Source avec Zip Source avec une capture GESTION DE TACHES par thebigboss
Source avec Zip OUTIL DE VISUALISATION DE L'INDICE BOURSIER par ajkangoud
Source avec Zip Source .NET (Dotnet) CLASSE XMLMAPPER par Warny
Source avec Zip Source avec une capture Source .NET (Dotnet) TESTEUR DE REQUÊTES XPATH par nseveno

Commentaires et avis

Commentaire de visiorach le 19/11/2008 16:32:46 10/10

Salut à l'auteur
Ta classe marche niquel. je l'ai utilisée pour gagner du temps. et de toutes mes recherches sur les lectures de fichier xml je trouve que celle-ci sort du lot.
Merci pour le service

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Xpath ??? [ par nyoto ] Lut gens,J'ai une super question sur laquelle je ne trouve pas de r&#233;ponse sur le web. Je cherche &#224; faire une requ&#234;te sur un doc XML afi Syntaxe XPAth [ par lordphoenix ] Bonjour,J'utilise un fichier XML pour une petite application simple de gestion de liste de livre et j'utilise des requêtes XPAth pour faire des recher XPath, XML et requete [ par RegVB ] Bonjour &#224; tous,Je d&#233;sire rechercher des donn&#233;es dans un fichier xml grace &#224; XPath :exemple&nbsp; : &lt;?<FONT color=#00 Xpath sur un xml associé à un schéma [ par mathmax ] Bonjour, Je cherche à lire la valeur d'un noeud d'un document XML associé à un schéma. Voici le code que j'ai écris :            XmlDocument doc = new Xpath amateur ? [ par micbristol ] Salut ! Un message de desespere, je savais que j'etais pas tres fort mais la je m'avoue completement nul ! Ca fait 6 heures que je cherche sur le net XPath Navigation [ par citt ] Bonjour, J'ai un fichier xml de ce type : &lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;TEST xmlns="http:...." xmlns:xd="http:...."&gt;&lt;auteu XML et XPath [ par blueangel ] Bonjour, ma question porte sur xml et xpathnavigator. j'ai un flux xml dont voici la forme suivante: &lt;RESULTAT&gt;     &lt;node&gt;         &lt;DAT filtrer un xml sur un element [ par Draven ] Bonjour a tous,J'aimerai filtrer un fichier xml en fonction d'un element de celui-ci. Pour comprendre rien de tel qu'un exemple.Alors voila mon fichie word xml et sql server 2005 [ par sajid_morad ] salut tout le mondebon , mon probleme c est que j ai une application qui consiste à facilité  l édition des rapports en utilisant des modele predifini Mettre en cache dans le DataSet le contenu d'un fichier xml [ par herve_labenere ] Je réalise actuellement un lecteur MP3. Je stocke au 1er lancement de l'application la liste des mp3 dans un fichier XML. J'utilise pour cela la class


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,755 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales