xml + xpath, печатный элемент - PullRequest
       0

xml + xpath, печатный элемент

1 голос
/ 20 декабря 2010
Notice: Undefined property: DOMNodeList::$id in D:\wamp\www\xml\index.php on line 15
id:

Notice: Undefined property: DOMNodeList::$name in D:\wamp\www\xml\index.php on line 16
name:

<?php
$xml = new DOMDocument();

$xml->load('test.xml');

$xpath = new DOMXPath($xml);

$query = '/people/person[id="33333"]';

$entries = $xpath->query($query);

echo 'id:'. $entries->id.'<br/>';
echo 'name:'.$entries->name.'<br/>';
?>

Пример XML-файла:

<people>
...
    <person>
        <phone>33333</phone>
        <name>Aadgar</name>
        <last_name>Adas</last_name>
    </person>
...
</people>

Ответы [ 3 ]

3 голосов
/ 20 декабря 2010

Во-первых, узел id не существует ...

$query = '/people/person[id="33333"]';

Я думаю, вы хотите:

$query = '/people/person[phone="33333"]';

Затем вы должны сделать:

$entries = $xpath->query($query);

foreach ($entries as $entry) {
   echo 'name:'. $entry->getElementsByTagName('name')->item(0)->nodeValue.'<br/>';
   echo 'last_name:'.$entry->getElementsByTagName('last_name')->item(0)->nodeValue.'<br/>';
}

Кажется, вы перепутали синтаксис DOM и SimpleXML .

1 голос
/ 20 декабря 2010

вы ошиблись в xpath. 33333 - это номер телефона, а не идентификатор.

попробуй

$query = '/people/person[phone="33333"]';

Также

их нет идентификатора

echo 'id:'. $entries->id.'<br/>';
echo 'name:'.$entries->name.'<br/>';

попробуйте удалить часть идентификатора

0 голосов
/ 20 октября 2012

попробуйте это:

<?php
    $xml = new DOMDocument();

    $xml->load('test.xml');

    $xpath = new DOMXPath($xml);

    $query = '/people/person/phone';

    $entries = $xpath->query($query);

    foreach($entries  as $entry)
    {
       echo $entry;
    }
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...