2010-01-29 6 views
2

У меня есть документ 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("/[email protected]"); 

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

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

+0

см. Мое выражение ниже. вам понадобится/in/records/@ timestamp –

ответ

2

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

Правильное выражение Xpath это 'строка (/ записи/@ метка времени)'

Для 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

+0

рада помочь (15 char min) –

Смежные вопросы