2010-10-14 13 views
1

Considérez ce xml hypothétique:XML à stocker des valeurs complexes en PHP

<myApi xmlns="urn:something" xmlns:bla="urn:hello"> 
    <argument1>foo</argument1> 
    <argument2> 
    <p xmlns="http://www.w3.org/1999/xhtml">Some paragraph of text. <img src="http://www.example.org/hello.png" bla:test="oi" /></p> 
    </argument2> 
</myApi> 

Quelle serait la meilleure façon en PHP pour analyser le 2ème argument. La structure xml complète doit être stockée dans la base de données, mais il faut prendre en compte le fait qu'elle pourrait référencer des espaces de noms xml déjà déclarés plus haut dans le document.

Existe-t-il un bon moyen de retirer un morceau de XML en utilisant l'une des bibliothèques d'analyse PHP facilement disponibles, et de stocker toutes les informations sémantiques?

Répondre

1

Avez-vous regardé SimpleXML? Il effectue l'analyse sans valider, de sorte que vous pouvez lancer un XML bien formé et trier vous-même les balises valides et invalides. Vous pouvez également extraire des fragments XML à n'importe quel niveau. La seule chose avec laquelle il se débat un peu, c'est les espaces de noms.

+0

Namespaces est la grande chose pour moi. SimpleXML me donnera simplement une 'sous-chaîne' d'un fragment, mais le fragment ne doit pas nécessairement être valide (espaces de noms manquants). – Evert

+0

AFAIK, sa limitation est la création de balises dans le cadre des espaces de noms. Il y a des façons de le faire, mais j'entends que c'est un peu maladroit. Je n'ai pas utilisé SimpleXML pour travailler avec des balises namespaced, notez, tout simplement XML non validé et ça marche très bien avec ça. – staticsan