[C#] problème xml, SelectSingleNode & xpath

(j’ai presque honte de poser cette question mais ça marche pas …)

j’ai le contenu xml suivant, qui me semble correct

<Tr rn="101000047572675" vr="T" sSpre="S" reg="P" dSpre="2010-07-01" dOdprt="2009-12-15" iban="SI56" vir="B" maticnaPps="5092221000" xmlns="http://www.xxxxx.xx/xml_sheme/rtr/rtr_pod-20100601">
  <Imetnik davcna="31949576" matSub="5734908000">
    <PopolnoIme>MATAK storitveno podjetje d.o.o. Mengeš</PopolnoIme>
    <KratkoIme>MATAK d.o.o. Mengeš</KratkoIme>
    <Naslov sifTipNaslova="01" sifObcina="072" sifPosta="1234" sifUlica="0048" sifNaselje="003" stHisna="002" sifHsmid="11488528">
      <Obcina>MENGEŠ</Obcina>
      <Posta>MENGEŠ</Posta>
      <Ulica>PREŠERNOVA CESTA</Ulica>
      <Naselje>MENGEŠ</Naselje>
    </Naslov>
  </Imetnik>
</Tr>

Pourtant, j’ai une erreur systématique en utilisant SelectSingleNode dessus.
C’est reproductible avec le simple test suivant

[CODE]using System;
using System.Xml;

namespace WindowsApplication1
{
static class Program
{
[STAThread]
static void Main()
{
string xmlText = « <Tr rn=« 101000047572675 » vr=« T » sSpre=« S » reg=« P » dSpre=« 2010-07-01 » dOdprt=« 2009-12-15 » iban=« SI56 » vir=« B » maticnaPps=« 5092221000 » xmlns=« http://www.ajpes.si/xml_sheme/rtr/rtr_pod-20100601 »><Imetnik davcna=« 31949576 » matSub=« 5734908000 »>MATAK storitveno podjetje d.o.o. MengešMATAK d.o.o. Mengeš<Naslov sifTipNaslova=« 01 » sifObcina=« 072 » sifPosta=« 1234 » sifUlica=« 0048 » sifNaselje=« 003 » stHisna=« 002 » sifHsmid=« 11488528 »>MENGEŠMENGEŠPREŠERNOVA CESTAMENGEŠ »;
XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlText);

  string test = doc.SelectSingleNode("Tr/Imetnik").InnerXml;

}

}
}[/CODE]
Pourtant le XPath me semble correct, alors c’est quoi que je fais mal?

Merci d’avance :slight_smile:

C’est à cause de ton namespace, par contre je ne me rapelle plus du tout comment on gère ca avec du XmlDocument (XDocument ftw).

Je me demande si ce n’est pas un truc à renseigner sur une surcharge de SelectSingleNode, qui permette de résoudre les namespaces

J’aurais parié sur ça aussi, en te proposant de supprimer ton xmlns="" pour vérifier que c’est bien ça qui pose problème.

Hello,

Bon alors je connais pas grand chose en C# mais je crois tout simplement que SelectSingleNode comprend pas le Xpath que tu lui file.

http://msdn.microsoft.com/fr-fr/library/system.xml.xmlnode.selectsinglenode(VS.80).aspx
http://msdn.microsoft.com/fr-fr/library/fb63z0tw(v=VS.80).aspx

Bingo, c’est bien le namespace qui fout le bordel: le retirer permet de charger le contenu xml sans problème. Par contre ce qui m’étonne c’est qu’avec ce namespace “incorrect” je n’arrivais pas à utiliser SelectSingleNode mais les méthodes du genre FirstChild marchaient.

C’est normal, tu peux pas “sauter” au milieu basee sur une adresse incomplete, mais tu peux prendre les choses dans l’ordre genre firstchild, root, et suivant/precedent.

Ok, merci des précisions. Enfin bon j’ai pu corriger ce problème en faisant un petit