現在の位置: ホーム> 最新記事一覧> php xpath関数を使用してsimplexmlを使用してXMLを解析する方法は?詳細な使用例共有

php xpath関数を使用してsimplexmlを使用してXMLを解析する方法は?詳細な使用例共有

gitbox 2025-08-25

2。XPathの紹介

XPathは、XMLドキュメントのノードを見つけるために使用される言語です。 SimplexMLにはXPath()メソッドが付属しており、XPath式を使用してノードを照会できます。


3。XMLをXPATHで解析する例

次のXMLからすべてのノードを取得する必要があると仮定します。著者は「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;PHPはじめる&lt;/title&gt;
        &lt;author&gt;チャン・サン&lt;/author&gt;
    &lt;/book&gt;
    &lt;book id="2"&gt;
        &lt;title&gt;XML</span>実際の戦闘を分析します&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;詳細な理解PHP&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">// XPathクエリauthor为li si的bookノード</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">"本のタイトル:"</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>

実行結果:

 <span><span>本のタイトル:</span><span><span class="hljs-type">XML</span></span><span>実際の戦闘を分析します
本のタイトル:詳細な理解PHP
</span></span>

4。XPath式の説明

  • // Book :すべてのノードを選択します

  • [著者= 'li si'] :フィルタリング条件、著者ノード値「li si」でブックノードを選択します


V.より実用的な例

1.ノード属性を取得します

すべてのID属性を取得します:

 <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">"本ID:"</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。複雑なクエリ

1を超えるIDの本を入手してください:

 <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。概要

  • simplexml_load_string()またはsimplexml_load_file()を使用してXMLをロードします。

  • XPath()メソッドを使用して、XPath式でノードを柔軟に見つけます。

  • ノードプロパティは、属性配列からアクセスできます。

  • Xpath式は強力であり、複数のフィルタリングとパスの位置決めをサポートできます。

SimplexMLとXPathの組み合わせをマスターすると、PHP開発者がさまざまなXMLデータを効率的に処理できるようになり、プログラムの柔軟性と保守性が向上します。