开发者社区> 问答> 正文

php删除xml中空节点问题!

php如何删除xml中空节点????????

展开
收起
小旋风柴进 2016-03-09 13:33:43 2434 0
1 条回答
写回答
取消 提交回答
  • php对xml文件中节点的删除编辑

    使用getElementsByTagName_r()方法删除编辑XML节点
    三个文件:

    1.root.xml
    2.remove.php —— 删除节点
    3.replace.php —— 替换节点
    root.xml
    <root> 
    <child1>child1 content</child1> 
    <child2>child2 content</child2> 
    <child3>child3 content</child3> 
    </root>
     
    remove.php
    <?php
    $xml_str = file_get_contents("root.xml"); //将root.xml文件中的内容读入一个字符串
    $doc = DOMDocument::loadXML($xml_str);  //载入这个字符串
     
    //取得元素$child2
    $root = $doc->documentElement;
    $child2 = $root->getElementsByTagName_r("child2")->item(0);
     
    //删除$child2对象
    $root->removeChild($child2);
     
    //保存文件
    $doc->formatOutput = true;
    $doc->saveXML();
    $doc->save("root.xml");
    ?>
     
    replace.php
    <?php
    $xml_str = file_get_contents("root.xml"); //将root.xml文件中的内容读入一个字符串
    $doc = DOMDocument::loadXML($xml_str);  //载入这个字符串
     
    //取得元素$child3
    $root = $doc->documentElement;
    $child3 = $root->getElementsByTagName_r("child3")->item(0); 
     
    //创建一个newchild元素来替代child3
    $root->replaceChild(new DOMElement("newchild", "new content"), $child3); 
     
    //保存文件
    $doc->formatOutput = true;
    $doc->saveXML();
    $doc->save("root.xml");
    ?>
     
    使用使用XPath删除\修改节点
    1.xml.xml
    2.re.php —— 替换\删除节点
    3.replace.xml —— 替换节点后的XML文件
    4.remove.xml —— 删除节点后的XML文件
    
    xml.xml 
     
    <?xml version="1.0"?>
    <books>
    <book>
      <author>Jack Herrington</author>
      <title>PHP Hacks</title>
      <publisher>O'Reilly</publisher>
    </book>
     
    <book>
      <author>Jack Herrington</author>
      <title>Podcasting Hacks</title>
      <publisher>O'Reilly</publisher>
    </book>
    </books>
    
     re.php
     
    <?php
    $dom = new DomDocument();
    $dom ->load("xml.xml");
    $xpath = new domxpath($dom);
     
    //修改节点
    $oldtitle = $xpath->query("/books/book/title")->item(0);
    $newtitle = $dom->createElement_x("title");
    $newtitle->appendChild(new DOMText("NEW"));
    $oldtitle->parentNode->replaceChild($newtitle, $oldtitle);
    $dom->save("replace.xml");
     
    //删除节点
    $oldtitle = $xpath->query("/books/book/title")->item(1);
    $oldtitle->parentNode->removeChild($oldtitle);
    $dom->save("remove.xml");
    ?>
    replace.xml 
    
     
    <?xml version="1.0"?>
    <books>
    <book>
      <author>Jack Herrington</author>
      <title>NEW</title>
      <publisher>O'Reilly</publisher>
    </book>
     
    <book>
      <author>Jack Herrington</author>
      <title>Podcasting Hacks</title>
      <publisher>O'Reilly</publisher>
    </book>
    </books>
    remove.php 
     
     
    <?xml version="1.0"?>
    <books>
    <book>
      <author>Jack Herrington</author>
      <title>NEW</title>
      <publisher>O'Reilly</publisher>
    </book>
     
    <book>
      <author>Jack Herrington</author>
      <publisher>O'Reilly</publisher>
    </book>
    </books>
    2019-07-17 18:55:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛 立即下载
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载