PHP SimpleXML Hata Mesajı

4 Cevap php
Warning:  main() [function.main]: Node no longer exists

I simplexml_load_file, bazen bir öznitelik değerleri vardır ve bazen değil üzeri ml dosyası yüklenirken duyuyorum.

Kullanımı:

$value = $xml->Name->arttributes();

Echo $value; 

nasıl bir uyarı almadan bir değer olup olmadığını görmek için kontrol edin hata yok.

Teşekkürler

4 Cevap

O () yöntemi bir değer döndüren değil nitelikleri mi? Ayarlı değil $ xml-> adı olabilir gibi görünüyor. $ Xml-> İsim ayarlı ise kontrol deneyin:

if( isset($xml->Name) )
      $value = $xml->Name->attributes();

Eğer, örneğin, ondan herhangi bir yöntemi kullanmadan önce düğüm aslında var olduğunu kontrol etmelisiniz

if (isset($xml->Name))
{
    $value = $xml->Name->attributes();
}
<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<movies>
 <movie>
  <title>PHP: Behind the Parser</title>
  <characters>
   <character>
    <name>Ms. Coder</name>
    <actor>Onlivia Actora</actor>
   </character>
   <character>
    <name>Mr. Coder</name>
    <actor>El Act&#211;r</actor>
   </character>
  </characters>
  <plot>
   So, this language. It's like, a programming language. Or is it a
   scripting language? All is revealed in this thrilling horror spoof
   of a documentary.
  </plot>
  <great-lines>
   <line>PHP solves all my web problems</line>
  </great-lines>
  <rating type="thumbs">7</rating>
  <rating type="stars">5</rating>
 </movie>
</movies>
XML;
?>

<?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

/* Access the <rating> nodes of the first movie.
 * Output the rating scale, too. */
foreach ($xml->movie[0]->rating as $rating) {
    switch((string) $rating['type']) { // Get attributes as element indices
    case 'thumbs':
        echo $rating, ' thumbs up';
        break;
    case 'stars':
        echo $rating, ' stars';
        break;
    }
}
?>

Şimdiye kadar, sadece okuma eleman isimleri ve değerlerinin çalışmalarını örtülü var. SimpleXML da eleman özelliklerini erişebilirsiniz. Sadece bir dizinin öğeleri olduğu gibi bir elemanın erişim nitelikleri.

i yaptığını düşünüyorum:

$attributeValue = isset($xml->attributes()->attributeName) ? $xml->attributes()->attributeName : null;