XPath ile PHP SimpleXML

3 Cevap php

Ben küçük bir XML dosyası vardır:

<wddxPacket version='1.0'>
  <header/>
  <data>
    <struct type='coldfusion.runtime.ArgumentCollection'>
      <var name='HEADLINE'>
        <string>Richard Barret's Articles on Leadership and High Performance Organisations</string>
      </var>
    </struct>
  </data>
</wddxPacket>

Ben var isim MANŞET öğesi dize elemanı arasındaki değer elde PHP SimpleXML ve XPath'i kullanmaya çalışıyorum. Bu kod çalışır:

// Location of the XML file on the file system
$file = 'http://10.10.200.37/skins/importscript/41802.xml';
$xml = simplexml_load_file($file);

// CREATE THE ARRAYS FOR EACH XML ELEMENT NEEDED

$title = $xml->xpath('//var[@name="HEADLINE"]');

echo "<p>";
print_r($title);
echo "</p>";

Sorun bu değer değil, aynı zamanda tüm dizi bilgileri sadece döndürür olmasıdır. Gibi:

Array ( 
  [0] => SimpleXMLElement Object ( 
    [@attributes] => Array ( 
      [name] => HEADLINE 
    ) 
    [string] => Richard Barret's Articles on Leadership and High Performance Organisations
  )
)

Nasıl ben sadece değerini ve başka bir şey geri alabilirim?

Ben ile print_r değiştirin echo $title; yerine değeri sayfasındaki kelime Array olsun. Ben çalışırsanız echo $title[0]; Ben hiçbir şey olsun.

Ben şimdi o kadar çok şey denedim başka bir şey düşünemiyorum! Ben yanlış ne yapıyorum? Herkes bana doğru yönde işaret? Teşekkürler!

3 Cevap

Sorry please ignore this! Just after I posted the question I realised what I was doing wrong!

Ben bugün burada olduğum gibi herkes gibi yavaş olduğu için sorun oldu ...

$title = $xml->xpath('//var[@name="HEADLINE"]');

Olmalıdır:

$title = $xml->xpath('//var[@name="HEADLINE"]/string');

Şimdi olması gerektiği gibi çalışıyor.

Sen nodeValue ilgilendi.

Örnek:

$xpath->evaluate("some_tag_name", $some_dom_element)->item(0)->nodeValue;

veya string seçici kullanabilirsiniz:

$title = $xml->xpath('//var[@name="HEADLINE"]/string');

SimpleXML değerleri alırken bir alışkanlık olarak hep 'string' türü eklemek

$title = (string) $xml->xpath('//var[@name="HEADLINE"]/string');

Emin değilim bu iyi bir uygulama olup olmadığını ..