2012-06-19 64 views
0

通過一個變量只是一個簡單的問題,嘗試不同的方式來完成這一點,但沒有成功。我正在嘗試使用xpath檢查屬性值,如果屬性值匹配,我更改xml中該標記的參數。Xpath屬性值檢查使用PHP

這工作:

$obj= $xml->xpath('/document/item[@id = "a12sd"]'); 

這是不行的,因爲我需要通過一個變量來傳遞值檢查與屬性值

$checkID = "a12sd"; 

$obj= $xml->xpath('/document/item[@id = $checkID]'); 

任何建議,我怎麼能糾正這個問題。

編輯:

XML文件:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<document> 
    <item id="a12sd">  
     <name>James</name> 
     <pdf>0023.pdf</pdf> 
    </item> 
    <item id="rdf23">  
     <name>Alex</name> 
     <pdf>0178.pdf</pdf> 
    </item> 
    <item id="2we34">  
     <name>Tom</name> 
     <pdf>0886.pdf</pdf> 
    </item> 
    <item id="123de">  
     <name>Robby</name> 
     <pdf>1239.pdf</pdf> 
    </item> 
</document> 

PHP代碼:

$id = "a12sd"; 
$xml = simplexml_load_file('items.xml'); 

$who_is_who = $xml->xpath('/document/item[@id = "a12sd"]');    

$who_is_who[0]->name = "Arnold"; 

$xml->asXml("items.xml"); 

感謝

+0

嘗試將變量放在引號中,就像您在第一行所做的那樣:'[@id =「$ checkID」]' –

+0

@Tino,按您的建議做,但出錯 – 125369

+0

這將有助於準確瞭解哪些錯誤; ) –

回答

1

嘗試$obj= $xml->xpath('/document/item[@id="'.$checkID.'"]');

<?php 
$id = "a12sd"; 
$xml = simplexml_load_file('items.xml'); 

$who_is_who = $xml->xpath('/document/item[@id = "'.$id.'"]');    

$who_is_who[0]->name = "Arnold"; 

$xml->asXml("items.xml"); 

?> 
+0

謝謝Pushpesh,你爲我節省了一次時間,沒有意識到,它可以這樣做,謝謝指出它 – 125369