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 :
Je dois par exemple récupérer la valeur du noeud "CR_ind" donc 34.8.
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>
En VB6 je procédait comme ceci :
Pour le faire en C# j'ai un peu du mal je ne parvient pas à parcourir mon arborescence
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
J'ai fais un truc du genre mais en passant en debug je ne vois jamais le nœud qui m’intéresse :
Si quelqu'un aurait une idée pour me dépanner ...
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();
Merci d'avance
Partager