2014-03-25 6 views
0

Я пытаюсь преобразовать объект в строку и сравнить их, но он не работает.Сравнение объекта XML со строкой

Может ли кто-нибудь увидеть проблему?

Hello <?php $country = (string)$_POST["country"]; echo $country; ?><br> 
<? 
    //echo gettype($country), "\n"; 
    $xml=simplexml_load_file("info.xml"); 

    foreach($xml->children() as $xml_country){ 
     //echo $xml_country->id . ": " . "<br>"; 

     //$id = array((string) $xml_country->id); 
     $id = strip_tags($xml_country->id->asXML()); 
     echo $id; 
     echo "id: ", gettype($id), "\n"; 
     echo "country: ", gettype($country), "\n"; 
     echo "\n"; 
     if($country == $id){ 
      echo $xml_country->id . ": " . "<br>"; 
     } 
    } 
    ?> 

info.xml

<countries> 

<country> 
    <id> AF </id> 
    <name> Afghanistan </name> 
    <city> 
     Major cities - population: KABUL (capital) 3.097 million (2011) 
    </city> 
    <description> 
     This entry provides the population of the capital and up to four major cities defined as urban agglomerations with populations of at least 750,000 people. 
    </description> 
    <hiv> 
     Adult prevalence rate: 0.01% (2001 est.) 
    </hiv> 
</country> 
</countries> 

Выход

http://i.gyazo.com/261c6892ef8b6bf8fbdf5d3a7303ebef.png

+1

Какой выход из вашего скрипта в данный момент, а что содержание info.xml выглядеть? –

+0

@BrianDriscoll См. Править. –

+0

Хорошо, так какой результат вы ожидаете? Вы должны знать, что '==' делает свободное сравнение типов, поэтому вам явно не нужно сравнивать две строки с помощью этого оператора. –

ответ

0

Ваш XML имеет пробелы вокруг значений идентификаторов, которые, скорее всего, причина, почему сравнение не удается.

Вы должны быть обрезки строк всегда перед сравнениями:

if(trim($country) == trim($id)){ 
     echo $xml_country->id . ": " . "<br>"; 
    } 
+0

Наконец-то работает! Большое спасибо. :) –

Смежные вопросы