Bonjour, j'ai quelques soucis pour parser un fichier XML et y récupérer certaines informations.

Voici un morceau d'exemple de ce fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<message>
 <folder>
  <transaction>
    <item>
 ......
    </item>
    <item>
     <id S="ID-K" SV="1.0">9</id>
     <cd S="CD-ITEM" SV="1.0">lab</cd>
     <cd S="LOCAL" SL="local" DN="Créatinine" L="F" SV="1.0">CR_ind</cd>
     <content>
      <decimal>34.8</decimal>
      <unit>
       <cd S="LOCAL" SL="local" DN="mg/L" L="F" SV="1.0">mg/L</cd>
      </unit>
      <minref>
       <decimal>7.2</decimal>
      </minref>
      <maxref>
       <decimal>11.8</decimal>
      </maxref>
     </content>
     <beginmoment>
      <date>2012-11-10</date>
      <time>05:35:00</time>
     </beginmoment>
     <iscomplete>true</iscomplete>
     <isvalidated>true</isvalidated>
     <confirmationmoment>
      <date>2012-11-10</date>
      <time>07:28:47</time>
     </confirmationmoment>
     <validationmoment>
      <date>2012-11-10</date>
      <time>07:31:09</time>
     </validationmoment>
     <severity>
      <cd S="CD-SEVERITY" SV="1.0">abnormal</cd>
      <cd S="LOCAL" SL="local" DN="abnormal" L="F" SV="1.0">1</cd>
     </severity>
     <urgency>
      <cd S="CD-URGENCY" SV="1.0">asap</cd>
      <cd S="LOCAL" SL="local" DN="Urgent" L="F" SV="1.0">2</cd>
     </urgency>
    </item>
    <item>
 ......
    </item>
  </transaction>
 </folder>
</message>
Je dois par exemple récupérer la valeur du noeud "CR_ind" donc 34.8.

En VB6 je procédait comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Set objXml = New DOMDocument40
 
If objXml.loadXML(xml) Then
 
For k = 0 To objXml.selectNodes("/message/folder/transaction/heading/item").length - 1
 
   Set xmlItem = objXml.selectNodes("/message/folder/transaction/heading/item").Item(k)
 
   If UCase(xmlItem.selectSingleNode("cd[@S='LOCAL']").Text) = "CR_IND" Or UCase(xmlItem.selectSingleNode("cd[@S='LOCAL']").Text) = "CRX" Or UCase(xmlItem.selectSingleNode("cd[@S='LOCAL']").Text) = "CRU" Then
      If Not xmlItem.selectSingleNode("content/decimal") Is Nothing Then
         obj.CreatAfterOneMonth = xmlItem.selectSingleNode("content/decimal").Text
         Exit For
      End If
    End If
    DoEvents
Next k
Pour le faire en C# j'ai un peu du mal je ne parvient pas à parcourir mon arborescence

J'ai fais un truc du genre mais en passant en debug je ne vois jamais le nœud qui m’intéresse :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
 
doc.Load(sr);
 
System.Xml.XmlElement  element = doc["message"]["folder"]["transaction"]["heading"];
 
foreach (System.Xml.XmlElement CurrentElement in element.ChildNodes)
{
 
}
 
sr.Close();
Si quelqu'un aurait une idée pour me dépanner ...

Merci d'avance