Lecture d'un fichier xml avec xpath

Contenu du snippet

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 / Exemple :


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...

++

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.