2012-01-07 16 views
-2

可能性の重複:
SimpleXML get element content based on attribute value属性に基づいてXML文書の一部を印刷しますか?

私はいくつかの関連トピックを見てきたが、答えを見つけることができません。

たとえば、米ドル通貨のcurrの値を印刷するにはどうすればよいですか?

foreach($xml as $currency) { 
     echo $currency[0]->curr; 
    } 

をしかし、それは私が後だかなり何ではありません。

  <?xml version="1.0"?> 
      <currencies> 
       <currency id="AUD"> 
         <curr>Australian dollar</curr> 
         <loc>Australia, Australian Antarctic Territory, Christmas Island, Cocos (Keeling) Islands, Heard and McDonald Islands, Kiribati, Nauru, Norfolk Island, Tuvalu</loc> 
       </currency> 
       <currency id="USD"> 
         <curr>United States Dollar</curr> 
         <loc>American Samoa, British Indian Ocean Territory, Caribbean Netherlands, Ecuador, El Salvador, Guam, Haiti, Marshall Islands, Micronesia, Northern Mariana Islands, Palau, Panama, Puerto Rico, Timor-Leste, Turks and Caicos Islands, United States, U.S. Virgin Islands, Barbados (as well as Barbados Dollar), Bermuda (as well as Bermudian Dollar), Zimbabwe</loc> 
       </currency> 
      </currencies> 

私はこれを行うことによって、私が特に欲しいものを印刷することができます。また、私が達成しようとしているもの、またはこれをより簡単な方法で達成することができたとしても、私のXMLマークアップは大丈夫ですか?

答えて

2

XPath構文を使用して行います。http://php.net/manual/simplexmlelement.xpath.php

$string = '<?xml version="1.0"?> 
      <currencies> 
       <currency id="AUD"> 
         <curr>Australian dollar</curr> 
         <loc>Australia, Australian Antarctic Territory, Christmas Island, Cocos (Keeling) Islands, Heard and McDonald Islands, Kiribati, Nauru, Norfolk Island, Tuvalu</loc> 
       </currency> 
       <currency id="USD"> 
         <curr>United States Dollar</curr> 
         <loc>American Samoa, British Indian Ocean Territory, Caribbean Netherlands, Ecuador, El Salvador, Guam, Haiti, Marshall Islands, Micronesia, Northern Mariana Islands, Palau, Panama, Puerto Rico, Timor-Leste, Turks and Caicos Islands, United States, U.S. Virgin Islands, Barbados (as well as Barbados Dollar), Bermuda (as well as Bermudian Dollar), Zimbabwe</loc> 
       </currency> 
      </currencies>'; 

$xml = new SimpleXMLElement($string); 
var_dump($xml->xpath('//currency[@id="USD"]'); 
+0

感謝を試してみてください。非常に簡単:) – tctc91

0

$data = simplexml_load_string($xml); 
foreach($data->currencies as $currency) { 
    // $currency->curr.. etc 
] 
関連する問題