2012-05-03 2 views
0

Вот мой XML <response> <statusCode>200</statusCode> <statusText>OK</statusText> <data> <getAssetResponse> <assetId>89898</assetId> <content> some text with HTML content </content> </getAssetResponse> </data></response>PHP: XML узел содержимого редактировать и возвращать XML

В моем PHP, мне нужно заменить SUBSTR содержимого узла (HTML с XHTML) и возвращает XML с такой же структурой.

<?php $file = file_get_contents("filx.xml"); $doc = DOMDocument::loadXML($file); $data = $dom->getElementsByTagName("data"); foreach($data as $node){echo "hello";}

мой простой старт не работает ... Что мне нужно сделать, чтобы получить содержимое узла?

ответ

0

Если вам нужно только заменить содержимое контент-узла, он может быть проще использовать SimpleXML, например:

<? 
$xml_object = simplexml_load_file("test.xml"); 
$xml_object->data->getAssetResponse->content = "Test 123"; 
print $xml_object->asXML(); 
?> 

Результат:

<?xml version="1.0"?> 
    <response> 
    <statusCode>200</statusCode> 
    <statusText>OK</statusText> 
    <data> 
     <getAssetResponse> 
     <assetId>89898</assetId> 
     <content>Test 123</content> 
     </getAssetResponse> 
    </data> 
    </response> 
+0

Спасибо. Замечательно. Но я хочу найти и заменить ... Итак, я попробовал следующее ... data-> getAssetResponse-> content; $ new-data = str_replace ("NEW", "OLD", $ data-content); $ xml_object-> data-> getAssetResponse-> content = $ new-data; print $ xml_object-> asXML(); ?> Не работает – tv4free

+0

Это странно .. Следующий код отлично работает на моем ПК: ' data-> getAssetResponse-> content; $ content = str_replace ("Test", "TEST", $ content); $ xml_object-> data-> getAssetResponse-> content = $ content; print $ xml_object-> asXML(); ?> ' – Pieter

+0

Он работает. Может быть bcos имени переменной. благодаря – tv4free