Самый простой редактор узлов XML для PHP

Может ли кто-нибудь предоставить самый простой/кратчайший код, который может редактировать значения в узле xml? Я искал это часами, и все, что я получаю, это ошибки и сбои. Мне нужно что-то, что может получить узел (/node/node1/node2) и отредактировать его содержимое. Я использую php-5. Спасибо

Редактировать: Допустим, у меня есть этот XML-файл:

<node>
  <node2>
    Content
  </node2>
</node>

Что мне нужно сделать, так это изменить значение <node2> с "content" на что-то другое.


person Preston    schedule 18.02.2011    source источник
comment
возможный дубликат Простая программа для CRUD node и значения узлов XML-файла   -  person Gordon    schedule 18.02.2011


Ответы (2)


SimpleXML

$doc = simplexml_load_file('http://example.com/example.xml');

// Note the SimpleXMLElement is the root node, ie <node>
$doc->node2 = 'new content';

$doc->asXml('new-filename.xml'); // Note, saves locally
// or
$xmlString = $doc->asXml();
person Phil    schedule 18.02.2011
comment
Что мне нужно добавить, если xml является удаленным файлом? - person Preston; 18.02.2011
comment
@Phil Brown Добавляет новые узлы, а не обновляет текущие. Есть ли другой код, который вы можете предоставить? Благодарность - person Preston; 18.02.2011
comment
@Preston Я не думаю, что вы можете добавлять новые узлы, используя этот метод. Всегда думал, что нужно использовать SimpleXMLElement::addChild(). В любом случае, это, вероятно, будет очень специфичным для структуры документа. Возможно, вы могли бы добавить пример к вашему вопросу. - person Phil; 18.02.2011
comment
@Preston Отредактировал мой ответ соответственно - person Phil; 18.02.2011
comment
@Phil Brown По какой-то причине он все еще добавляет еще один тег ‹node2›‹/node2› в конец файла и сохраняет другую часть. Любые другие предложения/код? - person Preston; 18.02.2011
comment
@Preston Есть ли другие узлы <node2>? Если это так, вам нужно определить, какой из них изменить по его индексу, например, $doc->node2[0] = 'new content'; - person Phil; 18.02.2011
comment
@Фил Браун Спасибо за помощь. В конце концов я получил это, выполнив следующее: $doc-›node-›node2[0] = 'new content'; - person Preston; 18.02.2011

Вы ищете SimpleXML, отличный класс для анализа/редактирования XML

person Stoosh    schedule 18.02.2011