您的位置主页 > 编程专区 > Php > php对xml文件中节点的删除\编辑

php对xml文件中节点的删除\编辑

2009-09-24    文章来源:互联网    浏览次数:2978     分享文章

php对xml文件中节点的删除\编辑

使用getElementsByTagName()方法删除\编辑XML节点
三个文件
1.root.xml
2.remove.php —— 删除节点
3.replace.php —— 替换节点
root.xml
  1. <root> 
  2. <child1>child1 content</child1> 
  3. <child2>child2 content</child2> 
  4. <child3>child3 content</child3> 
  5. </root>
 
remove.php
  1. <?php
  2. $xml_str = file_get_contents("root.xml"); //将root.xml文件中的内容读入一个字符串
  3. $doc = DOMDocument::loadXML($xml_str);  //载入这个字符串
  4.  
  5. //取得元素$child2
  6. $root = $doc->documentElement;
  7. $child2 = $root->getElementsByTagName("child2")->item(0);
  8.  
  9. //删除$child2对象
  10. $root->removeChild($child2);
  11.  
  12. //保存文件
  13. $doc->formatOutput = true;
  14. $doc->saveXML();
  15. $doc->save("root.xml");
  16. ?>
 
replace.php
  1. <?php
  2. $xml_str = file_get_contents("root.xml"); //将root.xml文件中的内容读入一个字符串
  3. $doc = DOMDocument::loadXML($xml_str);  //载入这个字符串
  4.  
  5. //取得元素$child3
  6. $root = $doc->documentElement;
  7. $child3 = $root->getElementsByTagName("child3")->item(0); 
  8.  
  9. //创建一个newchild元素来替代child3
  10. $root->replaceChild(new DOMElement("newchild""new content"), $child3); 
  11.  
  12. //保存文件
  13. $doc->formatOutput = true;
  14. $doc->saveXML();
  15. $doc->save("root.xml");
  16. ?>
 
使用使用XPath删除\修改节点
1.xml.xml
2.re.php —— 替换\删除节点
3.replace.xml —— 替换节点后的XML文件
4.remove.xml —— 删除节点后的XML文件

xml.xml 
 
  1. <?xml version="1.0"?>
  2. <books>
  3. <book>
  4.   <author>Jack Herrington</author>
  5.   <title>PHP Hacks</title>
  6.   <publisher>O'Reilly</publisher>
  7. </book>
  8.  
  9. <book>
  10.   <author>Jack Herrington</author>
  11.   <title>Podcasting Hacks</title>
  12.   <publisher>O'Reilly</publisher>
  13. </book>
  14. </books>

 re.php
 
  1. <?php
  2. $dom = new DomDocument();
  3. $dom ->load("xml.xml");
  4. $xpath = new domxpath($dom);
  5.  
  6. //修改节点
  7. $oldtitle = $xpath->query("/books/book/title")->item(0);
  8. $newtitle = $dom->createElement("title");
  9. $newtitle->appendChild(new DOMText("NEW"));
  10. $oldtitle->parentNode->replaceChild($newtitle$oldtitle);
  11. $dom->save("replace.xml");
  12.  
  13. //删除节点
  14. $oldtitle = $xpath->query("/books/book/title")->item(1);
  15. $oldtitle->parentNode->removeChild($oldtitle);
  16. $dom->save("remove.xml");
  17. ?>
replace.xml 

 
  1. <?xml version="1.0"?>
  2. <books>
  3. <book>
  4.   <author>Jack Herrington</author>
  5.   <title>NEW</title>
  6.   <publisher>O'Reilly</publisher>
  7. </book>
  8.  
  9. <book>
  10.   <author>Jack Herrington</author>
  11.   <title>Podcasting Hacks</title>
  12.   <publisher>O'Reilly</publisher>
  13. </book>
  14. </books>
remove.php 
 
 
  1. <?xml version="1.0"?>
  2. <books>
  3. <book>
  4.   <author>Jack Herrington</author>
  5.   <title>NEW</title>
  6.   <publisher>O'Reilly</publisher>
  7. </book>
  8.  
  9. <book>
  10.   <author>Jack Herrington</author>
  11.   <publisher>O'Reilly</publisher>
  12. </book>
  13. </books>

文章评论(查看全部)

昵 称 *
电子邮箱 *
网 址      2 + 2 = ?