使用php删除xml中的Parent标记

时间:2010-05-12 11:09:59

标签: php xml

我在编辑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 个答案:

答案 0 :(得分:1)

方法#1:嗯,你可以使用SimpleXMLElement :: xpath来检索urlset节点,然后使用SimpleXMLElement :: addChild来添加你想要的节点。

链接:http://php.net/manual/en/book.simplexml.php

方法#2(简单但不推荐):在“&lt; / urlset&gt;”上使用str_replace这样:

$xmlDoc = str_replace("</urlset>", "<!-- YOURXML--></urlset>", $xmlDoc);
无论哪种方式都不应该很难。

答案 1 :(得分:0)

$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();

答案 2 :(得分:0)

我建议你看看这个网址以获得更好的想法

http://www.ibm.com/developerworks/library/os-xmldomphp/