IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

XML XPath: récupérer un élément quand il y a des namespaces


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 42
    Points : 24
    Points
    24
    Par défaut XML XPath: récupérer un élément quand il y a des namespaces
    Bonjour,
    j'ai un fichier xml qui ressemble a ca :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Output xmlns="toto.blabla://" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <Data>-1</Data>
      <Result xmlns:a="http://toto.blabla/CLSAPI3">
        <a:ResultCode>INTERNAL_ERROR</a:ResultCode>
        <a:ResultMessage>OK</a:ResultMessage>
        <a:ResultCodeEx>CLS_SE_NO_OPEN_CALL</a:ResultCodeEx>
      </Result>
      <Exception i:nil="true" xmlns:a="http://schemas.datacontract.org/2004/07/System" />
    </Output>


    j'aimerais récupérer le resultcode sauf que j'y arrive pas.
    voici ce que je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void RecupData(XmlDocument doc){
                        XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc1.NameTable);
     
                        nsmgr.AddNamespace("Toto", "toto.blabla://");
                        nsmgr.AddNamespace("a", @"http://toto.blabla/CLSAPI3");
     
                        string xpathdoc = "/Output/Result/a:ResultCode";
     
                        XmlNode resultcode = doc1.SelectSingleNode(xpathdoc,nsmgr);
     
                        string result = resultcode.InnerText;
     
    }
    en fait le resucode est vide.

    est-ce que quelqu'un aurait une solution ?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Modifier le code XPath : //*["ResultCode"=local-name()]

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        nsmgr.AddNamespace("Toto", "toto.blabla://");
        nsmgr.AddNamespace("a", @"http://toto.blabla/CLSAPI3");
     
        //string xpathdoc = "/Output/Result/a:ResultCode";
        string xpathdoc = "/Toto:Output/Toto:Result/a:ResultCode";

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/08/2015, 10h26
  2. Réponses: 6
    Dernier message: 15/11/2012, 09h35
  3. Réponses: 1
    Dernier message: 05/03/2010, 13h30
  4. [XPATH] Récupérer un élément dans un fichier XML
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 07/06/2007, 19h49
  5. [XPath] Récupérer l'ID max dans un fichier XML
    Par Phach dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/07/2005, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo