ParserXML

Comment parser un fichier XML avec libxml ?

Je fournis ici un petit programme C (et son Makefile) permettant de parser le fichier exemple XML detector.xml.

Soit:



        
        
	
	
	        
		
		
	
	
	
		
		
	
	
		<slice material = "Silicon" thickness = "0.008*cm"/>
		<slice material = "Silicon" thickness = "0.002*cm" sensitive = "yes" />
	
	

  1. Avant toute chose nous devons nous assurer que le document XML à parser est bien du format pour lequel notre parser est fait c.à.d ici à detector. On utilise pour cela la fonction xmlNodePtr qui permet de naviguer sur les noeuds xml de notre document.
    xmlNodePtr cur;
    

    Si on se position au premier noeud

    cur = xmlDocGetRootElement(doc);
    

    nous devons avoir la condition:

    if(!xmlStrcmp(cur->name, (const xmlChar *) "detector"))
    

    vérifié sinon on sort du programme..

  2. On se deplace dans le document avec xmlChildrenNode
    cur = cur->xmlChildrenNode;
    

    Le contenu des champs des noeuds se fait avec xmlGetProp, par exemple

    InnerRadius = xmlGetProp(cur,"inner_r")
    

    nous donne la valeur du champ inner_r qui se trouve au noeud layer.

  3. Pour avoir accès au contenu du noeud comment (par exemple
    « Only a xml file to show how to parse it … ») on utilise:

    xmlNodeListGetString
    

Voilà pour essentiel …

Pour tester mon petit parser de demo:

Ce contenu a été publié dans Informatique, avec comme mot(s)-clé(s) , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *