當前位置: 首頁> 最新文章列表> 如何用PHP xpath函數結合SimpleXML解析XML?詳細使用示例分享

如何用PHP xpath函數結合SimpleXML解析XML?詳細使用示例分享

gitbox 2025-08-25

二、XPath簡介

XPath是一種用來在XML文檔中定位節點的語言,SimpleXML自帶xpath()方法,可以利用XPath表達式查詢節點。


三、結合SimpleXML與XPath解析XML的示例

假設我們需要從如下XML中獲取所有book節點中, author是“李四”的書籍標題。

 <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;李四&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;李四&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為李四的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='李四']"</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>

四、XPath表達式說明

  • //book :選取所有book節點

  • [author='李四'] :過濾條件,選出author節點值為“李四”的book節點


五、更多實用示例

1. 獲取某個節點屬性

獲取所有bookid屬性:

 <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. 複雜查詢

獲取id大於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>

六、總結

  • 使用simplexml_load_string()simplexml_load_file()加載XML。

  • 利用xpath()方法配合XPath表達式靈活定位節點。

  • 可以通過屬性數組方式訪問節點屬性。

  • XPath表達式功能強大,可支持多種篩选和路徑定位。

掌握了SimpleXML和XPath的結合使用,能夠讓PHP開發者高效處理各種XML數據,提升程序的靈活性和可維護性。