Удалите родительский тег в xml с помощью php - PullRequest
0 голосов
/ 12 мая 2010

У меня проблема с редактированием XML-файла.

<?xml version="1.0" encoding="UTF-8"?>

  <urlset>

  <url>
   <loc>http://www.abc.com/</loc>
   <lastmod>2010-04-17T17:23:57+00:00</lastmod>
   <changefreq>daily</changefreq>
   <priority>0.50</priority>
  </url>
  <url>
   <loc>http://www.abc.com/</loc>
   <lastmod>2010-04-17T17:23:57+00:00</lastmod>
   <changefreq>daily</changefreq>
   <priority>0.50</priority>
  </url>

</urlset>

Я хочу добавить еще один набор записей, начинающийся с <url> с другими его тегами (т. Е. "Loc, lastmod, changefreq, priority" и затем сохранить файл xml. Для добавления новой записи мне нужно удалить родительский закрывающий тег - </urlset>, добавьте остальные записи и закройте главный тег.
Может кто-нибудь, пожалуйста, помогите мне решить мою проблему. Спасибо

Ответы [ 3 ]

1 голос
/ 12 мая 2010

Подход № 1. Хорошо, вы можете использовать SimpleXMLElement :: xpath для получения узла urlset, а затем использовать SimpleXMLElement :: addChild для добавления нужных узлов.

Ссылка: http://php.net/manual/en/book.simplexml.php

Подход № 2 ( легкий, но не рекомендуется ): используйте str_replace для "" следующим образом:

$xmlDoc = str_replace("</urlset>", "<!-- YOURXML--></urlset>", $xmlDoc);

В любом случае это не должно быть сложно.

0 голосов
/ 12 мая 2010

Я просто предлагаю вам посмотреть этот URL для лучшей идеи

http://www.ibm.com/developerworks/library/os-xmldomphp/
0 голосов
/ 12 мая 2010
$dom = new DomDocument('1.0', 'utf-8');
$dom->loadXML($xml); // if it's a string, $dom->load($xmlFile) if is a file
// create the new node element
$node = $dom->createElement('url');
// build node
$node->appendChild($dom->createElement('loc', 'loc value'));
$node->appendChild($dom->createElement('lastmode', 'lastmod value'));
// (...)
// append the child node to the root
$dom->documentElement->appendChild($node);
// get the document as an XML string
$xmlStr = $dom->saveXML();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...