2011-11-25 35 views
0

我在這種形式中遇到過類似問題的答案,但是無法解決我確切的問題。所以我張貼這在這裏:使用PHP檢查XML文件中是否存在搜索屬性

我有一個XML文件,如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <document> 
     <user> 
      <user_id>0121</user_id> 
      <name>Tim</name> 
      <file>0121.file</file> 
     </user> 

     <user> 
      <user_id>0178</user_id> 
      <name>Henry</name> 
      <file>0178.file</file> 
     </user> 

     <user> 
      <user_id>0786</user_id> 
      <name>Martin</name> 
      <file>0786.file</file> 
     </user> 

     <user> 
      <user_id>1239</user_id> 
      <name>Jan</name> 
      <file>1239.file</file> 
     </user> 
    </document> 

我要求用戶輸入自己的USER_ID和發佈此USER_ID並執行對整個XML文件進行檢查,以檢查輸入的user_id是否存在於xml文件中。如果存在,那麼如果不回顯錯誤消息,我會走得更遠。 有人可以把我拉出來嗎?

感謝

回答

0

編輯答案 忘了我以前的答案:P

$user_id = '1239'; 
$xml = new SimpleXMLElement($xml); 
$found = false; 
foreach($xml->user AS $user) { 
    if ($user->user_id == $user_id) { 
     $found = true; 
     break; 
    } 
} 
if (!found) echo 'error'; 
+0

但它認爲isset( )用於查找變量是否設置。但是我想搜索整個XML文件來查明指定的屬性是否存在。我認爲這不會有幫助。如果你說這有幫助,那麼我真的想知道如何? – 125369

+0

我更新了我的答案 – Codler

+0

非常感謝Codler,非常感謝您的幫助! – 125369

0

你可以使用DOM文檔與DOMXpath查詢,一個例子: -

$doc = new DOMDocument; 
$doc->load(...); 

$xpath = new DOMXPath($doc); 
$query = '//user/user_id[.="0121"]'; 
$entries = $xpath->query($query); 
if ($entries->length) 
{ 
    // found 
}