如何使用php删除基于子属性的XML标签? - php

我有一个像下面的XML

<entries>
  <entry>
    <title lang="en">Sample</title>
    <entrydate>0</entrydate>
    <contents>0</contents>
    <entrynum>0</entrynum>
  </entry>
  <entry>
    <title lang="fr">Sample</title>
    <entrydate>1</entrydate>
    <contents>1</contents>
    <entrynum>1</entrynum>
  </entry>
</entries>

PHP中是否可以根据标题entry属性删除父节点(lang)?我只需要保留en,所以在这种情况下,我需要获取没有第二个entry节点的XML。

我尝试环顾四周,但找不到任何解决方案...

参考方案

您需要使用DOMDocument类将字符串解析为XML文档。然后使用DOMXpath类在文档中查找目标元素,并使用DOMNode::removeChild()从文档中删除所选元素。

$doc = new DOMDocument(); 
$doc->loadXML($xml);
$xpath = new DOMXpath($doc);
// select target entry tag
$entry = $xpath->query("//entry[title[@lang='fr']]")->item(0);
// remove selected element
$entry->parentNode->removeChild($entry);
$xml = $doc->savexml();

您可以在demo中查看结果

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP:检查谁看过发送的电子邮件? - php

我正在向某些用户发送电子邮件,并且想知道是谁阅读的,这意味着如果有人阅读了该电子邮件,则将维护一个日志文件,其中包含该用户的电子邮件地址以及日期/时间/ IP。为此,我发送一个带有电子邮件(html模板)的javascript函数,当用户打开该电子邮件时,它仅会警告用户的电子邮件地址,例如:for($n=0; $n<sizeof($checkBox);…

我这里需要结尾的分号吗? - php

例:<?php $formElement->display()?> 可以吗,还是我应该提供? ?好吧,我猜想PHP解释器足够聪明,可以看到由于结尾的?>,该行已完成并且表达式已完成。对? 参考方案 它不是必需的,但您应该放它,这是一种很好的做法。这样,您需要在这条指令之后添加另一条指令的那一天,它将很好地工作。这是回答您问题的手册页面…

PHP PDO组按列名称查询结果 - php

以下PDO查询返回以下结果:$db = new PDO('....'); $sth = $db->prepare('SELECT ...'); 结果如下: name curso ABC stack CDE stack FGH stack IJK stack LMN overflow OPQ overflow RS…

通过>和<运算符比较日期 - php

在我的所有php代码中,我都在UTC中存储日期和时间,但是我也在使用mysql存储日期时间(也在utc中)。大于和小于运算符会导致日期比较失败吗? $curdate=date('Y-m-d H:i:s'); if($start_datetime>$curdate) 参考方案 不。他们没有办法失败。为此,特意制作了MySQL日期格式。…