Php 使用SimpleXML删除多个空节点

Php 使用SimpleXML删除多个空节点,php,xml,xpath,simplexml,Php,Xml,Xpath,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"); 我通过一个pri

我想使用
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文件中删除任何东西。

我知道这篇文章有点旧,但在您的
foreach
中,
$torm
在每次迭代中都会被替换。这意味着您的
unset($torm)
未对原始
$doc\u xml
对象执行任何操作

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

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

通过使用SimpleXmlElement自引用。

我知道这篇文章有点旧,但在您的
foreach
中,
$torm
在每次迭代中都会被替换。这意味着您的
unset($torm)
未对原始
$doc\u xml
对象执行任何操作

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

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

通过使用SimpleXmlElement自引用。

我不相信您实际上是在$doc\u xml中对元素取消设置()。让我查看SimpleXML以了解如何正确删除节点。可能的重复项我不相信您实际上是在$doc_xml中的元素上取消设置()。让我查一下SimpleXML,看看如何正确地删除一个节点。
dom\u import\u SimpleXML()
可能的重复项不是必需的,您可以在SimpleXML中使用
unset
直接删除元素节点,而不必切换到dom()。
dom\u import\u SimpleXML()
,您可以在simplexml中使用
unset
直接删除元素节点,而无需切换到DOM()。