2009-12-09 2 views
3
Warning: main() [function.main]: Node no longer exists 

Я загружаю файл ml через simplexml_load_file, он иногда имеет значения для атрибута, а иногда нет.Сообщение об ошибке SimpleXML PHP

Использование:

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

Echo $value; 

как я ошибка проверить, есть ли значение без получения предупреждения.

Благодаря

ответ

5

Это метод attributes() не возвращает значение? Похоже, что это не может быть $ xml-> Name. Попробуйте проверить, если $ xml-> Имя устанавливается:

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

Спасибо, я поставил isset в неправильном месте ..: P – Brad

4

Вы должны проверить, что узел на самом деле существует, прежде чем использовать любой метод из него, например,

if (isset($xml->Name)) 
{ 
    $value = $xml->Name->attributes(); 
} 
+0

ааа вы меня бить! Я второй ответ – ryanday

+0

Спасибо, я поставил isset в неправильное место ..: P – Brad

0
<?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; 
    } 
} 
?> 

До сих пор мы только покрыли работу чтения имен элементов и их значения. SimpleXML также может обращаться к атрибутам элемента. Доступ к атрибутам элемента так же, как и к элементам массива.

0

я думаю делать:

$attributeValue = isset($xml->attributes()->attributeName) ? $xml->attributes()->attributeName : null; 
Смежные вопросы