2014-01-02 3 views
0

Вот мой XML-фрагмент:Как создать новый XML из результата xpath с помощью simplexml?

<foo> 
    <bar> 
     <id>120034</id> 
     <name>Tom</name> 
    </bar> 
    <bar> 
     <id>9088812</id> 
     <name>Tom</name> 
    </bar> 
    <bar> 
     <id>140034</id> 
     <name>Mike</name> 
    </bar> 
</foo> 

Вот мой PHP, чтобы извлечь все bar/name = Tom:

$xml = simplexml_load_string($x); // XML assumed in $x 

$results = $xml->xpath("/foo/bar[name = 'Tom']"); 

Проблема: Как сделать новый XML из $results?

Я попытался

$results->asXML(); 

, но я получил ошибку, что $results не является SimpleXML-объект.

+0

xpath results domnodelist. это не сам XML-документ, а только список/массив узлов, которые соответствуют выражению xpath. Вы можете извлечь отдельные NODES из этого списка и превратить их в xml. –

+0

@MarcB как это можно сделать? – michi

ответ

1

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

$xml = simplexml_load_string($x); // XML assumed in $x 
$results = $xml->xpath("/foo/bar[name = 'Tom']"); 
foreach($results as $result) echo $result->asXML(); 
Смежные вопросы