douniangliao4327 2010-10-14 11:29
浏览 81
已采纳

从xml文件中删除节点

I have an xml file

<?xml version="1.0"?>
<category>
  <name>SWEATERS</name>
  <name>WATCHES</name>
  <name>PANTS</name>
  <name>test</name>
  <name>1</name>
</category>

How i can remove the node <name>test</name> using xpath ,xquery and php. I used this code

 $name='test;
    $xmlfile="config/shop_categories.xml";
    $xml = simplexml_load_file($xmlfile);
    $target = $xml->xpath('/category[name="'.trim($name).'"]');
    print_r($target[0]);
    if($target == false)
    return; 
    $domRef = dom_import_simplexml($target[0]); //Select position 0 in XPath array
    $domRef->parentNode->removeChild($domRef);
    $dom = new DOMDocument('1.0');
    $dom->preserveWhiteSpace = false;
    $dom->formatOutput = true;
    $dom->loadXML($xml->asXML());
    $dom->save($xmlfile);

But it is not working.

  • 写回答

1条回答 默认 最新

  • douzhuangna6906 2010-10-14 11:40
    关注

    Pretty sure this is a duplicate, but am too lazy to find it. Here you go:

    $xml = <<< XML
    <?xml version="1.0"?>
    <category>
      <name>SWEATERS</name>
      <name>WATCHES</name>
      <name>PANTS</name>
      <name>test</name>
      <name>1</name>
    </category>
    XML;
    
    $dom = new DOMDocument;
    $dom->loadXML($xml);
    $xPath = new DOMXPath($dom);
    foreach($xPath->query('//name[text() = "test"]') as $node) {
        $node->parentNode->removeChild($node);
    }
    echo $dom->saveXML();
    

    Output:

    <?xml version="1.0"?>
    <category>
      <name>SWEATERS</name>
      <name>WATCHES</name>
      <name>PANTS</name>
    
      <name>1</name>
    </category>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?