我正在使用PHP 5.3+,特別是simplexml_load_string()。我試過尋找解決方案几個小時不運氣,所以任何幫助將不勝感激。使用XPath從XML獲取標籤名稱
我需要一個系統的方法來識別某個級別上的XML文件中存在的所有標籤名稱。
例XML:
<?xml version="1.0"?>
<properties>
<property>
<ID>243</ID>
<area>5,000</area>
<bathrooms>5</bathrooms>
<bedrooms>4</bedrooms>
<images>
<image>http://urltoimage.com/image1.jpg</image>
<image>http://urltoimage.com/image2.jpg</image>
</image>
</property>
<property>
<ID>332</ID>
<garage>2</garage>
<bathrooms>2</bathrooms>
<images>
<image>http://urltoimage.com/image5.jpg</image>
<image>http://urltoimage.com/image1.jpg</image>
</image>
</property>
<properties>
我需要能夠檢索的數組:
- ID
- 區域
- 浴室
- 臥室
- 車庫
正如您所看到的,第一個'property'元素沒有'garage',所以XML中的所有子元素都被聚合。我需要能夠識別'property'元素下面的所有標籤名稱,理想情況下排除任何有子元素的元素。我可以解決有孩子的滲出元素(本例中爲'圖像') - 但是XPath也會很好地處理該部分。
背後的原因 - 我們正在彙總具有不同標記變量的屬性數據的多個XML源,並且在導入之前,我們需要先了解XML中使用的所有不同標記名稱,然後再傳遞該數據轉移到程序的其餘部分。
那麼,是否有可以構建的XPath查詢?性能是一個因素,我不確定PHP函數的最佳配置是什麼,所以尋找建議。
這兩種解決方案的工作 - 謝謝你們。我做了一些基準測試,看哪一個更快,而且他們非常接近。對於一個小的XML文件,Phil的方法更快(0.008 vs 0.010秒)。對於較大的XML文件,它們幾乎完全相同。 – Andy