2016-04-12 25 views
0

Düğümleri çocuklara dayanarak almak için titreme yapıyorum. Bu yüzden 4061106 numaralı kimliği kullanarak tam kişiyi elde edemedim. SimpleXMLElement'i kullanıyorum, şimdilik tüm kişileri görüntülemek için bir foreach döngüsü yaptım ancak belirli bir kimliğe nasıl ulaşacağımı anlayamıyorum. Nereden başlayacağımı bile bilmiyorum.XML Ayrıştırma - Düğümleri çocuklara göre alın

<list> 
     <person> 
      <id>4061106</id> 
      <name>Stefan</name> 
      <country></country> 
      <is_admin>0</is_admin> 
      <lastCallbackTime></lastCallbackTime> 

     </person> 
     <person> 
      <id>4082930</id> 
      <name>Mike</name> 
      <is_admin>0</is_admin> 
      <lastCallbackTime></lastCallbackTime> 

     </person> 
</list> 
+0

Denediğiniz kodu gösterebilir misiniz? – WillardSolutions

cevap

2

Doğru değerle düğümü bulmak için XPath kullanmak ve sonra da üst düğüme geri atlamak gerekiyor.

$xml = ' 
    <list> 
    <person> 
     <id>4061106</id> 
     <name>Stefan</name> 
     <country></country> 
     <is_admin>0</is_admin> 
     <lastCallbackTime></lastCallbackTime> 
    </person> 
    </list> 
'; 

$sxml = simplexml_load_string($xml); 
$person = $sxml->xpath('/list/person/id[.="4061106"]/parent::person')[0]; 

echo (string) $person->name; // Stefan 
+0

$ oXML = new SimpleXMLElement ($ sXML) kullanıyorum; ve ben bunu simplexml_load_string içine aktarıyorum ve bir hata ayrıştırıcısı hatası alıyorum: Başlama etiketi bekleniyor, '<', sonuç bir XML onun sarılmış xml-> listesi –

+0

Sadece bir XML dizesini simplexml_load_string içine geçirmeniz gerekiyor. Bu nedenle, $ xml'nin orijinal yayınınızdaki dizeye ayarlanması gerekiyor. – iainn

+0

Kıvrılma ile –