"XMLement" parlant c'est valide. La DTD est bien respectée. Par
contre, mon fichier source qui était correctement indenté devient
vite désordonné, d'où mes 2 questions :
1-Est-il possible d'insérer mon groupe <New> directement sous <A>
2-Est-il possible d'indenter les balises insérée afin de conserver la
lisibilité originale de mon fichier source?
2-Est-il possible d'indenter les balises insérée afin de conserver la lisibilité originale de mon fichier source?
Oui avec "n" en bout de chaine et t pour chaque tabulation
Bonne Journée
Cordialement Démosthène
ftc
1-Est-il possible d'insérer mon groupe <New> directement sous <A>
Tu commences par récupérer le premier fils avec $first_child = $domnode->first_child(). Ensuite tu peux insérer ton noeud avec $domnode->insert_before( $newnode, $first_child );
2-Est-il possible d'indenter les balises insérée afin de conserver la lisibilité originale de mon fichier source?
$doc->dumpfile( 'file.xml', false, true ); // c'est le troisième paramètre qui est sensé formatter la sortie
C'est avec la version DOMXML ( php4 ), pour PHP5, c'est l'extension DOM, les fonctions ont leur équivalent.
1-Est-il possible d'insérer mon groupe <New> directement sous <A>
Tu commences par récupérer le premier fils avec $first_child =
$domnode->first_child().
Ensuite tu peux insérer ton noeud avec $domnode->insert_before(
$newnode, $first_child );
2-Est-il possible d'indenter les balises insérée afin de conserver la
lisibilité originale de mon fichier source?
$doc->dumpfile( 'file.xml', false, true ); // c'est le troisième
paramètre qui est sensé formatter la sortie
C'est avec la version DOMXML ( php4 ), pour PHP5, c'est l'extension DOM,
les fonctions ont leur équivalent.
1-Est-il possible d'insérer mon groupe <New> directement sous <A>
Tu commences par récupérer le premier fils avec $first_child = $domnode->first_child(). Ensuite tu peux insérer ton noeud avec $domnode->insert_before( $newnode, $first_child );
2-Est-il possible d'indenter les balises insérée afin de conserver la lisibilité originale de mon fichier source?
$doc->dumpfile( 'file.xml', false, true ); // c'est le troisième paramètre qui est sensé formatter la sortie
C'est avec la version DOMXML ( php4 ), pour PHP5, c'est l'extension DOM, les fonctions ont leur équivalent.
flconseil
1) Bien sûr. Tu peux insérer un noeud n'importe où du moment qu'il reste en dessous de ton objet root <A>. Je ne sais pas quelle API XML tu utilises, mais avec l'API DOM de PHP 5, tu as une methode DOMNode->insertBefore dans laquelle tu peux spécifier que tu veux créer un nouveau noeud avant ton bloc <Objects>.
2) Plus difficile. Toujours avec l'API DOM de PHP 5, il y a une propriété DOMDocument->formatOutput qui est censée faire ça quand elle est mise à true. En pratique, dans tous mes essais, ça ne change rien. Il doit y avoir un bug quelque part... Pour contourner ce pb et pouvoir quand même ouvrir les fichiers avec un éditeur type vi (qui ne supporte pas les lignes trop longues), j'insère systématiquement deux noeuds 'texte' qui entourent mon élément. C'est fait par une fonction comme celle-ci :
function MyAppendChild($indent,$parent,$element) { $t=$parent->ownerDocument->createTextNode("n".$indent); $parent->appendChild($t); $parent->appendChild($element); $t2=$parent->ownerDocument->createTextNode("n"); $parent->appendChild($t2); }
Ici, c'est un append, mais tu peux l'adapter à ton cas. Pas génial, mais je n'ai pas trouvé mieux...
1) Bien sûr. Tu peux insérer un noeud n'importe où du moment qu'il
reste en dessous de ton objet root <A>.
Je ne sais pas quelle API XML tu utilises, mais avec l'API DOM de PHP
5, tu as une methode DOMNode->insertBefore dans laquelle tu peux
spécifier que tu veux créer un nouveau noeud avant ton bloc
<Objects>.
2) Plus difficile. Toujours avec l'API DOM de PHP 5, il y a une
propriété DOMDocument->formatOutput qui est censée faire ça quand
elle est mise à true. En pratique, dans tous mes essais, ça ne change
rien. Il doit y avoir un bug quelque part...
Pour contourner ce pb et pouvoir quand même ouvrir les fichiers avec
un éditeur type vi (qui ne supporte pas les lignes trop longues),
j'insère systématiquement deux noeuds 'texte' qui entourent mon
élément. C'est fait par une fonction comme celle-ci :
function MyAppendChild($indent,$parent,$element)
{
$t=$parent->ownerDocument->createTextNode("n".$indent);
$parent->appendChild($t);
$parent->appendChild($element);
$t2=$parent->ownerDocument->createTextNode("n");
$parent->appendChild($t2);
}
Ici, c'est un append, mais tu peux l'adapter à ton cas. Pas génial,
mais je n'ai pas trouvé mieux...
1) Bien sûr. Tu peux insérer un noeud n'importe où du moment qu'il reste en dessous de ton objet root <A>. Je ne sais pas quelle API XML tu utilises, mais avec l'API DOM de PHP 5, tu as une methode DOMNode->insertBefore dans laquelle tu peux spécifier que tu veux créer un nouveau noeud avant ton bloc <Objects>.
2) Plus difficile. Toujours avec l'API DOM de PHP 5, il y a une propriété DOMDocument->formatOutput qui est censée faire ça quand elle est mise à true. En pratique, dans tous mes essais, ça ne change rien. Il doit y avoir un bug quelque part... Pour contourner ce pb et pouvoir quand même ouvrir les fichiers avec un éditeur type vi (qui ne supporte pas les lignes trop longues), j'insère systématiquement deux noeuds 'texte' qui entourent mon élément. C'est fait par une fonction comme celle-ci :
function MyAppendChild($indent,$parent,$element) { $t=$parent->ownerDocument->createTextNode("n".$indent); $parent->appendChild($t); $parent->appendChild($element); $t2=$parent->ownerDocument->createTextNode("n"); $parent->appendChild($t2); }
Ici, c'est un append, mais tu peux l'adapter à ton cas. Pas génial, mais je n'ai pas trouvé mieux...
fragmonster
Merci pour vos réponses, je vais essayer tout ça ^^
Merci pour vos réponses, je vais essayer tout ça ^^