10
votes

Convertir une matrice associative en XML en PHP

Je me demandais si une fonction capable de convertir un tableau associatif à un document XML existe dans PHP (ou une bibliothèque PHP largement disponible).

J'ai cherché beaucoup beaucoup et ne pouvait trouver que des fonctions qui ne produisent pas XML valide. Je crois que le tableau que je les teste est correctement construit, car il peut être correctement utilisé pour générer un document JSON à l'aide de JSON_ENCODE. Cependant, il est assez important et il est imbriqué à quatre niveaux, ce qui pourrait expliquer pourquoi les fonctions que j'ai essayées jusqu'à présent échouent.

En fin de compte, je vais écrire le code pour générer le XML moi-même mais il doit sûrement y avoir un moyen plus rapide de le faire.


1 commentaires

C'est une question en double: Stackoverflow.com/questions / 1397036 / ...


7 Réponses :


1
votes

'code> DOMDocument Les objets sont probablement ce que vous recherchez. Voici un lien vers un exemple d'utilisation de cette classe pour convertir un tableau multidimensionnel en un fichier XML - http://www.php.net/manual/fr/book.dom.php#78941


2 commentaires

Néanmoins ... ce n'est pas une fonction intégrée. Je pense que @Manbearpig discut de la fonction "Out-The-Box" ... Écrit en C ++ pour la performance ... Je me tromperais bien sûr.


La classe DOMDOCUMUMUME est intégrée - juste l'exemple de mise en œuvre n'est pas. Au contraire, DOMDOCUMUMUMER est une extension standard probable utilisée avec la plupart des instances PHP actuelles.



5
votes

Non. Au moins, il n'y a pas de fonction intégrée telle. Ce n'est pas un Probrem de l'écrire du tout.

Il doit sûrement y avoir un moyen plus rapide de faire cela

Comment représentez-vous l'attribut dans la matrice? Je peux assumer que les clés sont des balises et des valeurs sont ce contenu de balises.

tableau PHP de base -> JSON fonctionne juste bien, car la structure est ... bien ... presque la même.


2 commentaires

Les objets JSON et les matrices PHP sont de nature très similaire; XML est un animal différent, principalement parce que (a) Attribut-VS-Valeur et (b) plusieurs nœuds avec le même nom (c'est-à-dire une matrice indexée numériquement, mais comment choisissez-vous le nom?); Personnellement, je ne pense pas que vous puissiez créer une solution unique au-dessus de la portée du projet / de l'application.


Eh bien, vous avez raison. Il n'y a pas de balle d'argent. J'ai donc fini par construire mon propre XML à l'aide de DomDocument. Venez penser à cela, cette approche est également plus amusante.



0
votes

Il doit sûrement y avoir un moyen plus rapide de faire cela

Si vous avez installé de la poire, il y a. Jetez un coup d'œil à xml_séraliseur . C'est bêta, vous devrez donc utiliser xxx

à installer


0 commentaires

7
votes

Je me rends compte que je suis un johnny-viens-dernièrement ici, mais je travaillais avec le même problème - et les tutoriels que j'ai découverts là-bas auraient presque (mais pas tout à fait des tests unitaires) Couvrez-le.

Après beaucoup de frustration et de recherche, voici ce que je came avec

XML à l'Assoc. Array:

de http://www.php.net/manual/fr /simphexml.examples-basic.php xxx

assoc. Tableau sur XML

NOTES :


0 commentaires

1
votes

appel xxx

DataTrhansformator xxx


0 commentaires

0
votes

J'avais besoin d'une solution capable de convertir des tableaux avec des banquiers non associatifs et un contenu qui doit être échappé avec CDATA (<> &). Puisque je ne pouvais trouver aucune solution appropriée, j'ai mis en œuvre la mienne en fonction de SimplexML qui devrait être assez rapide.

https://github.com/traaeger/simplestexml (cette solution prend en charge un tableau (associatif) => XML et XML => (associative) conversion de tableau sans support d'attribut). J'espère que cela aide quelqu'un.


0 commentaires

1
votes
<?xml version="1.0"?>
<root>
  <element>
    <testa>testb</testa>
    <testc>testd</testc>
  </element>
</root>

0 commentaires