alors c'est assez dur à expliquer comme ça, donc je vais utiliser directement le cas sur lequel je suis !
je recois un message XML dans un string qui a cette tête :
comme vous le constater, j'ai un gros ensemble (notification), qui un contient un autre (taglist) qui peut en contenir plusieurs (Tag).
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 <Alien-RFID-Reader-Auto-Notification> <ReaderName>xxxr</ReaderName> <ReaderType>xxxx</ReaderType> <IPAddress>xxx.yyy.zzz.www</IPAddress> <CommandPort>ab</CommandPort> <MACAddress>xx:xx:xx:xx:xx:xx</MACAddress> <Time>...</Time> <Reason>...</Reason> <StartTriggerLines>..</StartTriggerLines> <StopTriggerLines>..</StopTriggerLines> <Alien-RFID-Tag-List> <Alien-RFID-Tag> <TagID>...........</TagID> <DiscoveryTime>......</DiscoveryTime> <LastSeenTime>.....</LastSeenTime> <Antenna>...</Antenna> <ReadCount>..</ReadCount> <Protocol>...</Protocol> </Alien-RFID-Tag> <Alien-RFID-Tag> ... </Alien-RFID-Tag> ... <Alien-RFID-Tag> ... </Alien-RFID-Tag> </Alien-RFID-Tag-List> </Alien-RFID-Reader-Auto-Notification>
Le truc c'est que je cherche à parser ce xml (on m'a conseillé TinyXML pour ça) mais je voudrais récupérer les information dans un objet.
la situation est maintenant posée. Passons au problème maintenant :
Je cherche donc à créer une classe que le parseur me remplira.
j'ai donc fait quelque chose de ce style :
la classe Notify me sert pour l'ensemble du message, la classe tag pour chaque tag que je peux avoir dedans.
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 class Notify { private: std::string readername; std::string readertype; std::string ipaddress; int commandport; std::string macaddress; std::string time; std::string reason; std::string starttriggerlines; std::string stopttriggerlines; }; class Tag { private: std::string tagid; std::string discoverytime; std::string lastseentime; int antenna; int readcount; int protocol; };
mais le problème, comment lier les deux ? Comment dire à la classe Notify quelle peut avoir un ou plusieurs objets de type Tag, mais que c'est le parseur qui décidera combien ?
en résumer, ça donne comment parser correctement ce message de m**** ?
merci d'avoir lu jusqu'ici et d'essayer de m'aider.
Partager