PHP SimpleXML: insérer un nœud à certaine position
dire que j'ai XML:
<root>
<nodeA />
<nodeA />
<nodeA />
<nodeC />
<nodeC />
<nodeC />
</root>
Comment puis-je insérer "b" entre le plus et le Cs? En PHP, de préférence via SimpleXML? Comme:
<root>
<nodeA />
<nodeA />
<nodeA />
<nodeB />
<nodeC />
<nodeC />
<nodeC />
</root>
Je ne suis pas sûr que vous le pouvez. À partir de la documentation, il semble que SimpleXML est conçu pour vraiment simple manipulation.
Je ne peux pas moyen de stocker Cs ailleurs, les supprimer, ajouter B, et ajouter la Cs de cet emplacement temporaire? Je suis juste pas très bien versé dans PHP....
Je ne peux pas moyen de stocker Cs ailleurs, les supprimer, ajouter B, et ajouter la Cs de cet emplacement temporaire? Je suis juste pas très bien versé dans PHP....
OriginalL'auteur Theo Heikonnen | 2010-07-29
Vous devez vous connecter pour publier un commentaire.
Voici une fonction pour insérer un nouveau SimpleXMLElement après quelques autres SimpleXMLElement. Car ce n'est pas directement possible avec SimpleXML, elle utilise de la DOM classes/méthodes de derrière-le-scènes pour faire le travail.
Et un exemple de la façon dont il pourrait être utilisé (spécifiques à votre question):
Si vous voulez/besoin d'une explication de comment cela fonctionne (le code est assez simple, mais peut inclure des concepts étrangers), il suffit de demander.
Ce n'est pas vous, pourquoi ne pas avoir du plaisir à répondre aux questions? 🙂
Oui, pourquoi pas. 🙂 Merci pour votre réponse.b.t.w. J'ai pris le libery de l'utiliser pour construire mon propre. 🙂
merci beaucoup, approciate
OriginalL'auteur salathe
Salathe réponse m'a aidé, mais depuis que j'ai utilisé la méthode addChild de SimpleXMLElement, j'ai cherché une solution pour faire de l'insertion des enfants dans un premier enfant plus transparent. La solution est de prendre que DOM en fonction de la fonctionnalité et de le cacher dans une sous-classe de SimpleXMLElement:
Après tout, SimpleXML permet de spécifier les éléments de la classe à utiliser:
Maintenant, vous pouvez appeler insertChildFirst sur n'importe quel élément à insérer le nouvel enfant dans un premier enfant. La méthode retourne un nouvel élément comme un élément SimpleXML, de sorte que son utilisation est similaire à la méthode addChild. Bien sûr, il serait facilement possible de créer un insertChild méthode qui permet de spécifier une valeur précise de l'élément à insérer l'élément avant, mais comme je n'ai pas besoin de ça, maintenant, j'ai décidé de ne pas.
OriginalL'auteur GolezTrol