PHP ajouter un nœud de fichier xml existant et enregistrer
Est-il possible à l'aide de php XMLWriter insérer un nœud à un fichier xml existant, puis enregistrez le fichier? Ce serait beaucoup plus bénéfique pour moi qui en fait la création d'un nouveau fichier à chaque fois que je veux mettre à jour un fichier xml.
Le grand problème ici est qu'un document XML bien formé doit avoir qu'un seul élément racine. Cela signifie que vous devez lire/analyser dans le document complet de l'arbre pour être en mesure d'ajouter un nouvel élément à l'intérieur. Par conséquent, toutes les simplexml suggestions ici.
XMLWriter est destiné à l'écriture d'un flux XML de données de manière très efficace, mais ne peut pas modifier les fichiers existants (sans les lire en premier).
Voir ce fil sur perlmonks.com en XML les fichiers journaux sont discutés. Particulièrement intéressant est le commentaire de "mirod" qui montre comment avoir un XML bien formé fichier et toujours être en mesure d'ajouter des nœuds à un document. La solution est de placer les nœuds arbitraires dans un fichier séparé (qui n'est pas bien formé, parce que le désordre de l'élément racine) et la référence du fichier comme une entité externe. Dans votre cas, vous devez écrire le fichier qui va être compris comme une entité avec le standard de PHP fopen, fwrite fclose fonction lors de l'ouverture du fichier pour l'ajout.
Faire la plupart des parseurs XML comprendre et gérer les fichiers de référence bien de pouvoir compter sur cette solution? Et c'est cette idée de ces nœuds n'étant pas validé un assez fort et compris l'idée? J'ai pu voir comment il sera, si le navigateur/client/parser va seulement en aval de la référence, mais est-il une chance que pour se protéger contre la malformation de références qu'il devra valider l'ensemble du document en premier? ou est-il juste besoin d'être valide dans le contexte de la primaire document xml? Je ne sais pas beaucoup de parseurs XML de savoir si "la plupart" des analyseurs de support d'extension d'entité. Je travaille principalement avec PHP et PHP, XML parser (un wrapper autour de xmllib) prend en charge. Après l'introduction, le document complet doit être bien formé. Je vais modifier ma réponse pour refléter cela.
Je voudrais utiliser
simplexml
à la place. Je vais aller sur une branche et en supposant que si vous avez XML writer vous avez simplexml.Voyons, pour ajouter un nœud, prenons un exemple très simple (l'obtenir?) fichier xml:
Si c'est dans un fichier, et vous voulez ajouter une nouvelle tarte, vous feriez:
Il peut être beaucoup plus sophistiqué que cela, bien sûr. Mais une fois que vous obtenez le coup de lui, il est très utile.
OriginalL'auteur Anthony
Vous pouvez utiliser PHP Simple XML. Vous devez lire le contenu du fichier, ajouter le nœud XML Simple et écrire le contenu.
OriginalL'auteur Felix Kling
Le grand problème ici est qu'un document XML bien formé doit avoir qu'un seul élément racine. Cela signifie que vous devez lire/analyser dans le document complet de l'arbre pour être en mesure d'ajouter un nouvel élément à l'intérieur. Par conséquent, toutes les simplexml suggestions ici.
XMLWriter est destiné à l'écriture d'un flux XML de données de manière très efficace, mais ne peut pas modifier les fichiers existants (sans les lire en premier).
Voir ce fil sur perlmonks.com en XML les fichiers journaux sont discutés. Particulièrement intéressant est le commentaire de "mirod" qui montre comment avoir un XML bien formé fichier et toujours être en mesure d'ajouter des nœuds à un document. La solution est de placer les nœuds arbitraires dans un fichier séparé (qui n'est pas bien formé, parce que le désordre de l'élément racine) et la référence du fichier comme une entité externe. Dans votre cas, vous devez écrire le fichier qui va être compris comme une entité avec le standard de PHP fopen, fwrite fclose fonction lors de l'ouverture du fichier pour l'ajout.
Je ne sais pas beaucoup de parseurs XML de savoir si "la plupart" des analyseurs de support d'extension d'entité. Je travaille principalement avec PHP et PHP, XML parser (un wrapper autour de xmllib) prend en charge. Après l'introduction, le document complet doit être bien formé. Je vais modifier ma réponse pour refléter cela.
OriginalL'auteur chiborg
Cela fonctionne parfaitement bien. Et vous pouvez ajouter des attributs à l'burger trop
OriginalL'auteur Emmanuel