2010-11-05 1 views
0

У меня есть файл XMLКак я могу редактировать файл XML с помощью DOMDocument и XQuery

<events date="06-11-2010"> 
    <event id="8"> 
     <title>Proin porttitor sollicitudin augue</title> 
     <description><![CDATA[Lorem nunc.]]></description> 
    </event> 
    </events> 
    <events date="16-11-2010"> 
    <event id="4"> 
     <title>uis aliquam dapibus</title> 
     <description><![CDATA[consequat vel, pulvinar.</createCDATASection></description> 
    </event> 
    <event id="1"><title>You can use HTML and CSS</title> 
    <description><![CDATA[Lorem ipsum dolor sit amet]]></description></event></events> 

Как я могу редактировать файл XML с относительно id использования DOMDocument и XQuery для сохранения CDATA Спасибо заранее

Текст ссылки

+0

Что вы хотите сделать? Пожалуйста, добавьте еще несколько деталей к вашему вопросу. – salathe

+0

Я хочу изменить название или описание. Описание с 'CDATA' с заданным значением' event id' – Warrior

ответ

2

Прежде всего, ваш документ имеет недопустимый синтаксис XML (тег </createCDATASection>). FTFY:

<events date="06-11-2010"> 
    <event id="8"> 
    <title>Proin porttitor sollicitudin augue</title> 
    <description><![CDATA[Lorem nunc.]]></description> 
    </event> 
</events> 
<events date="16-11-2010"> 
    <event id="4"> 
    <title>uis aliquam dapibus</title> 
    <description><![CDATA[consequat vel, pulvinar.]]></description> 
    </event> 
    <event id="1"> 
    <title>You can use HTML and CSS</title> 
    <description><![CDATA[Lorem ipsum dolor sit amet]]></description> 
</event> 
</events> 

Теперь, вот решение для редактирования заголовка/описание для события:

$dom = new DOMDocument; 
$dom->loadXML(file_get_contents('doc.xml')); 

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//event[@id="4"]/title | //event[@id="4"]/description'); 

// title 
$node = $nodes->item(0); 
$node->nodeValue = 'hello world'; 

// description 
$node = $nodes->item(1); 
$cdata = $node->firstChild; 
$cdata->replaceData(0, strlen($cdata->data), 'hello world description'); 

print $dom->saveXML(); 
Смежные вопросы