2012-01-07 2 views
-2

Можно создать дубликат:
SimpleXML get element content based on attribute valueраспечатать часть документа XML на основе атрибута?

Я просмотрел несколько взаимосвязанных тем, но не могу найти ответ.

Как напечатать, например, значение валюты для валюты в долларах США?

  <?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> 

Я могу напечатать то, что я хочу, специально делая это:

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

Но это не совсем то, что я после. Кроме того - моя метка 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 
] 
Смежные вопросы