Bonjour,
Je continue mon exploration laborieuse de XML.
J'essaie de chercher un noeud existant dans ce XML:
Mon programme affiche tous les noeuds enfants de 'device', j'obtiens la liste suivante:
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
54
55
56
57 <?xml version="1.0"?> <root xmlns="urn:schemas-upnp-org:device-1-0"> <specVersion> <major>1</major> <minor>0</minor> </specVersion> <device> <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType> <friendlyName>ILCE-7S</friendlyName> <manufacturer>Sony Corporation</manufacturer> <manufacturerURL>http://www.sony.net/</manufacturerURL> <modelDescription>SonyDigitalMediaServer</modelDescription> <modelName>SonyImagingDevice</modelName> <UDN>uuid:000000001000-1010-8000-7A4B879B63A0</UDN> <serviceList> <service> <serviceType>urn:schemas-sony-com:service:ScalarWebAPI:1</serviceType> <serviceId>urn:schemas-sony-com:serviceId:ScalarWebAPI</serviceId> <SCPDURL/> <controlURL/> <eventSubURL/> </service> <service> <serviceType>urn:schemas-sony-com:service:DigitalImaging:1</serviceType> <serviceId>urn:schemas-sony-com:serviceId:DigitalImaging</serviceId> <SCPDURL>/DigitalImagingDesc.xml</SCPDURL> <controlURL>/upnp/control/DigitalImaging</controlURL> <eventSubURL></eventSubURL> </service> </serviceList> <av:X_ScalarWebAPI_DeviceInfo xmlns:av="urn:schemas-sony-com:av"> <av:X_ScalarWebAPI_Version>1.0</av:X_ScalarWebAPI_Version> <av:X_ScalarWebAPI_ServiceList> <av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_ServiceType>guide</av:X_ScalarWebAPI_ServiceType> <av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL> <av:X_ScalarWebAPI_AccessType/> </av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_ServiceType>accessControl</av:X_ScalarWebAPI_ServiceType> <av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL> <av:X_ScalarWebAPI_AccessType/> </av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_ServiceType>camera</av:X_ScalarWebAPI_ServiceType> <av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL> <av:X_ScalarWebAPI_AccessType/> </av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_Service> <av:X_ScalarWebAPI_ServiceType>avContent</av:X_ScalarWebAPI_ServiceType> <av:X_ScalarWebAPI_ActionList_URL>http://192.168.122.1:8080/sony</av:X_ScalarWebAPI_ActionList_URL> <av:X_ScalarWebAPI_AccessType/> </av:X_ScalarWebAPI_Service> </av:X_ScalarWebAPI_ServiceList> </av:X_ScalarWebAPI_DeviceInfo> </device> </root>
deviceType
friendlyName
manufacturer
manufacturerURL
modelDescription
modelName
UDN
serviceList
av:X_ScalarWebAPI_DeviceInfo
Jusque la c'est normal, quand je recherche le noeud 'UDN' pas de soucis, par contre je n'arrive jamais à trouver le noeud 'av:X_ScalarWebAPI_DeviceInfo'. Voici le code qui fait cela:
Merci de vos avis éclairés.
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 procedure TForm1.ButtonTestXMLClick(Sender: TObject); var f:TextFile; Recherche:String; DeviceNode,ServiceListNode : IXMLNode; ANode : IXMLNode; STitle: WideString; i:integer; Begin XMLDoc.LoadFromFile('D:\Astro\Sony\XML.XML'); XMLDoc.Active:=True; if XMLDoc.DocumentElement <> nil then memo1.Lines.Assign(XMLDoc.XML); XMLDoc.Active:=True; DeviceNode := XMLDoc.DocumentElement.ChildNodes.FindNode('device') ; for i:=0 to DeviceNode.ChildNodes.Count-1 do begin memo1.Lines.Add(DeviceNode.ChildNodes[i].NodeName); // j'affiche tous les sous noeuds de 'device' Recherche:=DeviceNode.ChildNodes[i].NodeName; end; ServiceListNode := DeviceNode .ChildNodes.FindNode('UDN'); //pas de soucis le noeud est trouvé ServiceListNode := DeviceNode .ChildNodes.FindNode('av:X_ScalarWebAPI_Service'); //IMPOSSIBLE à trouver!! // ANode := ServiceListNode; // STitle:=ANode.Text; end;
Partager