2009-08-31 4 views
0

Je fichier XML comme ceci:Comment corriger bug XML comme celui-ci

<?xml version="1.0" encoding="ISO-8859-1"?> 
<note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 

Et je code dans ma page php:

<? php 
$xmlDoc = new DOMDocument(); 
$xmlDoc->load("note.xml"); 

$x = $xmlDoc->documentElement; 
foreach ($x->childNodes AS $item) 
{ 
    print $item->nodeName . " = " . $item->nodeValue . "<br />"; 
} 
?> 

La sortie du code ci-dessus est:

#text = 
to = Tove 
#text = 
from = Jani 
#text = 
heading = Reminder 
#text = 
body = Don't forget me this weekend! 
#text = 

Je sais que lorsque XML génère, il contient souvent des espaces blancs entre les noeuds. Mais tout le monde peut m'aider à faire défiler tous les éléments de l'élément XML pour contourner les espaces blancs entre les nœuds. Je veux dire boucler seulement tous les éléments réels de l'élément. Pls m'aide.

+0

Vous devriez envisager de cliquer sur la grosse coche à côté de la réponse qui vous a aidé à résoudre votre problème. C'est une façon de dire merci aux gens qui vous aident. – random

Répondre

4

Essayez cette

$xmlDoc = new DOMDocument(); 
$xmlDoc->preserveWhiteSpace = false; 
$xmlDoc->load("note.xml"); 
+0

Merci, merci beaucoup. Je suis en train d'éditer ma question mais vous y avez répondu. Merci –

2

Si vous voulez simplement itérer sur les éléments (et ne pas de choses de fantaisie comme éléments réorganisant et ainsi de suite) Je vais le simplexml -extension, qui font face à XML beaucoup plus simple:

$xml = simplexml_load_file('note.xml'); 
foreach ($xml as $node) { 
    echo $node->getName() . ' = ' . (string)$node . '<br />'; 
} 
0

Quoi que vous fassiez, ce sera juste un traitement symptomatique. Le fichier XML ne doit pas contenir ces caractères de retour à la ligne, car tout ce qui se trouve entre la fermeture > et l'ouverture < est considéré comme un élément de texte.