Nasıl sadece xpath gerekli unsurları için?

1 Cevap php

Ben bir değişken bir düğümün rütbe özniteliği saklamak istediğiniz bir xml dosyası var.

Denedim:

echo $var = $xmlobj->xpath("//Listing[@rank]");

boşuna, sadece yazdırır ArrayArray.

Bu nasıl yapılabilir?

if($xmlobj = simplexml_load_string(file_get_contents($xml_feed)))
      {
    		foreach($xmlobj as $listing)
    		{

    			  // echo 'Session ID: ' . $sessionId = $listing->sessionId . '<br />';
    			  // echo 'Result Set: ' . $ResultSet = $listing->ResultSet . '<br />';

    			  print_r($xmlobj->xpath("//Listing[@rank]"));

    			  // $result = $xmlobj->xpath("/page/");
    			  // print_r($result);

            }
      }

Henrik öneri:

foreach($xmlobj as $listing)
{
      $var = $xmlobj->xpath("//Listing[@rank]");

      foreach ($var as $xmlElement) 
      {
            echo (string)$xmlElement;
      }
}

Buyrun

<page>
   <ResultSet id="adListings" numResults="3">
      <Listing rank="1" title="Reliable Local Moving Company" description="TEST." siteHost="www.example.com">
      </Listing>

1 Cevap

Nakledilen örnek xml etrafında oynadıktan sonra edit:

  • Benim ilk cevap biraz pist kapalı - dizeye döküm size inner text, seçilen elemanların verecek, onlar (burada değil davayı) biri varsa
  • "//Listing[@rank]" Tüm 'Liste' Elements o have a 'rütbe' özniteliği seçer. Eğer öznitelikleri kendileri seçmek istiyorsanız, kullanabileceğiniz "//Listing/@rank"
  • Çıkışı bir nitelik için, dizi sözdizimi ile SimpleXMLElement kullanın: $xmlElement['rank']

Senin durumunda böyle:

fveyaeach($xmlobj as $listing)
{
    $var = $xmlobj->xpath("//Listing/@rank");
    fveyaeach ($var as $xmlElement) 
    {
      echo $xmlElement['rank'];
    }
}

veya

fveyaeach($xmlobj as $listing)
{
    $var = $xmlobj->xpath("//Listing[@rank]");
    fveyaeach ($var as $xmlElement) 
    {
      echo $xmlElement['rank'];
      echo $xmlElement['title']; // Added to demonstrate difference
    }
}

should wveyak.

Ikinci, (böylece başlık çıkışını sağlayan) tam 'Liste' unsuru içeren olur ise ilk durumda, $ XmlElement sadece 'rütbe' özniteliği içerecektir.