本文介绍了使用 SimpleXML 删除多个空节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 SimpleXML

这是我的代码:

$xs = file_get_contents('liens.xml')or die("Fichier XML non chargé");
$doc_xml = new SimpleXMLElement($xs);
foreach($doc_xml->xpath('//*[not(text())]') as $torm)
    unset($torm);
$doc_xml->asXML("liens.xml");

我通过 print_r() 看到 XPath 正在抓取一些东西,但没有从我的 XML 文件中删除.

I saw with a print_r() that XPath is grabbing something, but nothing is removed from my XML file.

推荐答案

我知道这篇文章有点旧,但是在你的 foreach 中,$torm 在每个迭代.这意味着您的 unset($torm) 对原始 $doc_xml 对象没有任何作用.

I know this post is a bit old but in your foreach, $torm is replaced in every iteration. This means your unset($torm) is doing nothing to the original $doc_xml object.

相反,您需要删除元素本身:

Instead you will need to remove the element itself:

foreach($doc_xml->xpath('//*[not(text())]') as $torm)
    unset($torm[0]);
               ###

通过使用simplxmlelement-self-reference.

这篇关于使用 SimpleXML 删除多个空节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 00:57