Position actuelle: Accueil> Derniers articles> Comment analyser XML avec SimplexML avec la fonction PHP XPATH? Exemple d'utilisation détaillée Partage

Comment analyser XML avec SimplexML avec la fonction PHP XPATH? Exemple d'utilisation détaillée Partage

gitbox 2025-08-25

2. Introduction à xpath

XPath est une langue utilisée pour localiser les nœuds dans des documents XML. Simplexml est livré avec la méthode XPath () , qui peut utiliser les expressions XPath pour interroger les nœuds.


3. Exemples d'analyse XML avec XPATH

Supposons que nous devons obtenir tous les nœuds de livre à partir du XML suivant, l'auteur est le titre de livre de "Li Si".

 <span><span><span class="hljs-variable">$xmlString</span></span><span> = <span class="hljs-string">&lt;&lt;&lt;XML
&lt;books&gt;
    &lt;book id="1"&gt;
        &lt;title&gt;PHPcommencer&lt;/title&gt;
        &lt;author&gt;Zhang San&lt;/author&gt;
    &lt;/book&gt;
    &lt;book id="2"&gt;
        &lt;title&gt;XML</span>Analyser le combat réel&lt;/title&gt;
        &lt;author&gt;Li si&lt;/author&gt;
    &lt;/book&gt;
    &lt;book id=</span><span><span class="hljs-string">"3"</span></span><span>&gt;
        &lt;title&gt;Compréhension approfondiePHP&lt;/title&gt;
        &lt;author&gt;Li si&lt;/author&gt;
    &lt;/book&gt;
&lt;/books&gt;
XML;

</span><span><span class="hljs-variable">$xml</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);

</span><span><span class="hljs-comment">// XPathRequêteauthor为Li si的booknœud</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$xml</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">xpath</span></span><span>(</span><span><span class="hljs-string">"//book[author='Li si']"</span></span><span>);

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$book</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Titre de livre:"</span></span><span> . </span><span><span class="hljs-variable">$book</span></span><span>-&gt;title . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

Résultats en cours:

 <span><span>Titre de livre:</span><span><span class="hljs-type">XML</span></span><span>Analyser le combat réel
Titre de livre:Compréhension approfondiePHP
</span></span>

4. Description de l'expression XPATH

  • // livre : sélectionnez tous les nœuds de livre

  • [Auteur = 'Li si'] : Conditions de filtrage, sélectionnez le nœud de livre avec la valeur du nœud de l'auteur "Li si"


V. Plus pratiques d'exemples

1. Obtenez un attribut de nœud

Obtenez les attributs d'identification de tous les livres :

 <span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$xml</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">xpath</span></span><span>(</span><span><span class="hljs-string">"//book"</span></span><span>) </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$book</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"LivreID:"</span></span><span> . </span><span><span class="hljs-variable">$book</span></span><span>[</span><span><span class="hljs-string">'id'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

2. Requête complexe

Obtenez des livres avec ID supérieur à 1:

 <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$xml</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">xpath</span></span><span>(</span><span><span class="hljs-string">"//book[@id &gt; 1]"</span></span><span>);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$book</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$book</span></span><span>-&gt;title . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

6. Résumé

  • Chargez XML à l'aide de simplexml_load_string () ou simplexml_load_file () .

  • Utilisez la méthode xpath () pour localiser flexiblement les nœuds avec des expressions XPath.

  • Les propriétés de nœud sont accessibles via des tableaux d'attribut.

  • Les expressions XPath sont puissantes et peuvent prendre en charge le filtrage multiple et le positionnement du chemin.

La maîtrise de la combinaison de simplexml et de xpath peut permettre aux développeurs de PHP de traiter efficacement diverses données XML, d'améliorer la flexibilité du programme et la maintenabilité.