NSXMLDocument et balises "vides"

RocouRocou Membre
10:44 modifié dans API AppKit #1
Bonjour,

Je tente de lire et de récupérer les éléments d'un fichier xml à  l'aide NSXMLDocument.

ça fonctionne très bien sauf dans le cas où le fichier contient une "balise vide". Si c'est le cas, le programme se crashe sur un “EXC_BAD_ACCESS”. Je n'arrive pas à  savoir comment tester si j'ai affaire à  une balise vide et comment y remédier.

Extrait du xml:
&lt;WINDEV_TABLE&gt;<br />&nbsp; &lt;PESEE&gt;<br />&nbsp; &nbsp; &lt;N__Ticket&gt;2162&lt;/N__Ticket&gt;<br />&nbsp; &nbsp; &lt;Date&gt;03/02/2011&lt;/Date&gt;<br />&nbsp; &nbsp; &lt;N__BL&gt;0&lt;/N__BL&gt;<br />&nbsp; &nbsp; &lt;CodeClient&gt;CODE DE TOTO&lt;/CodeClient&gt;<br />&nbsp; &nbsp; &lt;NomProduit&gt;MON PRODUIT&lt;/NomProduit&gt;<br />&nbsp; &nbsp; &lt;Heure_entrée&gt;06:41&lt;/Heure_entrée&gt;<br />&nbsp; &nbsp; &lt;Heure_sortie&gt;07:38&lt;/Heure_sortie&gt;<br />&nbsp; &nbsp; &lt;Poids_net&gt;240&lt;/Poids_net&gt;<br />&nbsp; &nbsp; &lt;Véhicule&gt;AK-47-WC&lt;/Véhicule&gt;<br />&nbsp; &nbsp; &lt;Date_entrée&gt;03/02/2011&lt;/Date_entrée&gt;<br />&nbsp; &nbsp; &lt;Heure&gt;07:38&lt;/Heure&gt;<br />&nbsp; &nbsp; &lt;Poids_entrée&gt;3620&lt;/Poids_entrée&gt;<br />&nbsp; &nbsp; &lt;Date_sortie&gt;03/02/2011&lt;/Date_sortie&gt;<br />&nbsp; &nbsp; &lt;Poids_sortie&gt;3380&lt;/Poids_sortie&gt;<br />&nbsp; &nbsp; &lt;NomClient&gt;&lt;/NomClient&gt;<br />&nbsp; &nbsp; &lt;CodeProduit&gt;CODE DU PRODUIT&lt;/CodeProduit&gt;<br />&nbsp; &lt;/PESEE&gt;


On voit ici qu'il n'y a rien entre ces balises:    <NomClient></NomClient>

et voici mon bout de code:

NSXMLDocument *xmlDoc; <br />&nbsp; &nbsp; NSError *err=nil; <br />&nbsp; &nbsp; NSURL *furl = [NSURL fileURLWithPath:file]; <br />	<br />&nbsp; &nbsp; if (!furl) { <br />&nbsp; &nbsp; &nbsp; &nbsp; NSLog(@&quot;Impossible de créer une adresse URL depuis le fichier %@&quot;, file); <br />&nbsp; &nbsp; &nbsp; &nbsp; return; <br />&nbsp; &nbsp; } <br />	<br />&nbsp; &nbsp; xmlDoc = [ [NSXMLDocument alloc] initWithContentsOfURL:furl options:(NSXMLNodePreserveWhitespace|NSXMLNodePreserveCDATA) error:&amp;err]; <br />	<br />	if (xmlDoc == nil) { <br />&nbsp; &nbsp; &nbsp; &nbsp; xmlDoc = [[NSXMLDocument alloc] initWithContentsOfURL:furl <br />													&nbsp; options:NSXMLDocumentTidyXML <br />														error:&amp;err]; <br />		<br />		NSLog(@&quot;erreur&quot;);<br />&nbsp; &nbsp; } <br />	<br />	<br />	NSXMLElement *thisUser; <br />	NSArray *nodes = [xmlDoc nodesForXPath:@&quot;/WINDEV_TABLE/PESEE&quot; error:&amp;err]; <br />


Dés que j'essaie d'accéder à  [nodes objectAtIndex:index], boum, ça plante.
Je sèche lamentablement alors que je suis sûr que c'est tout bête  :'(

Réponses

  • LexxisLexxis Membre
    10:44 modifié #2
    Salut,
    Je viens de faire un petit test (Xcode 4) et je n'ai pas eu d'erreurs. J'accède bien à  l'élément du tableau nodes. Avez vous une erreur lors de la première création du xmldoc ?
  • RocouRocou Membre
    10:44 modifié #3
    dans 1296816020:

    Salut,
    Je viens de faire un petit test (Xcode 4) et je n'ai pas eu d'erreurs. J'accède bien à  l'élément du tableau nodes. Avez vous une erreur lors de la première création du xmldoc ?

    Bon, le problème ne venait pas du tout de xmldoc. Merci beaucoup de vous être penché sur mon problème, cela m'a permis de prendre un peu de recul!  :)
Connectez-vous ou Inscrivez-vous pour répondre.