您好,我需要一些幫助來使用 PHP 和 xpath 找到我的 XML 元素。
這是我的 xml 的一部分:
"processen": {
"proces": [
{
"@attributes": {
"id": "B1221"
},
"velden": {
"kernomschrijving": "activiteit aanleggen alarminstallatie",
"model-kernomschrijving": "aanleggen alarminstallatie",
"naam": "Het beoordelen van een alarminstallatie",
"standaard-dossiernaam": {
"@attributes": {
"ref": "SCN0000029"
}
},
"[tag:taakveld]": "Bouwzaken & Procedures",
"proceseigenaar": "Bouwzaken",
"toelichting-proces": "bla die bla.",
"aanleiding": "Dit werkproces wordt intern getriggerd.",
"opmerking-proces": {
"@attributes": {
"ref": "SCN0000036"
}
},
"exportprofiel": {
"@attributes": {
"ref": "SCN0000037"
},
},...
例如,我希望能夠找到 id(快速)并訪問 id B1221 下的所有元素
我嘗試了各種變體,但沒有一個有效:
$xml = simplexml_load_file( $filename );
$proces = $xml->xpath("//processen/proces/@attributes/id=B1221");
$proces = $xml->xpath("//processen/proces[@attributes/id=B1221]");
它總是回傳一個空陣列...
謝謝你的幫助。
uj5u.com熱心網友回復:
您在那里展示的不是 XML,而是 XML。它是通過決議 XML 生成的 PHP 物件的某種表示,您可以通過它訪問 XML 的內容。
這聽起來像是一種迂腐的區別,但它實際上是您的問題的關鍵:XPath 運算式并非特定于 PHP,因此不會搜索此結構;它們是用于搜索 XML 本身的標準語言。
因此,要構造正確的 XPath 運算式,您只需要查看實際的 XML。從您展示的表示來看,我猜它看起來部分是這樣的:
<processen>
<proces id="B1816">
<velden>
<kernomschrijving>activiteit aanleggen alarminstallatie</kernomschrijving>
<model-kernomschrijving>aanleggen alarminstallatie</model-kernomschrijving>
<naam>Het beoordelen van een alarminstallatie</naam>
</velden>
</proces>
</processen>
在 XPath 中,您可以通過名稱訪問元素(標簽)、id="..."使用前導 的屬性(如 )@和雙引號中的文字字串。運算子的[...]意思類似于“有”,因此[@foo="bar"]表示“有一個屬性foo,其值為字串bar”。
這給了你這個:
$xml = simplexml_load_file( $filename );
$proces = $xml->xpath('//processen/proces[@id="B1816"]');
echo $proces[0]->asXML();
(這是該示例的現場演示。)
看起來您那里可能還有命名空間(名稱中帶有標簽:);這些需要在這個參考問題中討論的一些額外技巧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439557.html
上一篇:進入php腳本的引數的安全性
下一篇:資料已插入資料庫但具有空值
