Получить атрибуты корневого узла - PullRequest
2 голосов
/ 29 января 2010

У меня есть XML-документ с базовой структурой, подобной этой:

<?xml version="1.0" encoding="UTF-8" ?>
<records timestamp="1264777862">
<record></record>
<record></record>
<record></record>
<record></record>
</records>

До сих пор я использовал следующее:

$doc = new DOMDocument();
$doc->load('myfile.xml');
$xpath = new DOMXPath($doc);
$timestamp = $xpath->query("/records@timestamp");

Но это дает мне неверное выражениеошибка.

Какой правильный синтаксис выражения PHP / XPath использовать для получения атрибута timestamp корня?

1 Ответ

2 голосов
/ 29 января 2010

Какой у вас PHP-код? Вы используете DOMDocument? SimpleXML?

Правильное выражение Xpath: 'string (/ records / @ timestamp)'

Для SimpleXML см. http://php.net/manual/en/simplexmlelement.xpath.php например,

<?php
$string = <<<XML
<records timestamp="1264777862">
<record></record>
<record></record>
<record></record>
<record></record>
</records>

XML;

$xml = new SimpleXMLElement($string);

$result = $xml->xpath('string(/records/@timestamp)');

while(list( , $node) = each($result)) {
    echo $node,"\n";
}

?>

А для DOMXPath см. http://www.php.net/manual/en/domxpath.evaluate.php

<?php

$doc = new DOMDocument;

$doc->load('book.xml');

$xpath = new DOMXPath($doc);

// our query is relative to the records node
$query = 'string(/records/@timestamp)';

$timestamp = $xpath->evaluate($query);
echo $timestamp ."\n";

?>

EDIT
Смотрите редактирование выше. Необходимо привести к строке в выражении xpath

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