【问题标题】:How to deleted an element inside XML string?如何删除 XML 字符串中的元素?
【发布时间】:2011-05-24 07:30:59
【问题描述】:

如何删除此 XML 字符串中的 <title> 元素?

$input=
'<items>dfd jdh flkdjf 
<title>My Test Title
</title>....
<store>my store 1</store>
</items>.....';

$output=
    '<items>dfd jdh flkdjf 
        ....
    <store>my store 1</store>
    </items>.....';

谢谢

【问题讨论】:

标签: php xml regex


【解决方案1】:

单纯形

$str = '<items>1<title>lalala</title><others>...</others></items>';
$xml = simplexml_load_string($str);
unset($xml->children()->title);
$output = str_replace("<?xml version=\"1.0\"?>\n", '', $xml->asXml());

【讨论】:

  • SimpleXML 名副其实,+1
  • 谢谢,在实际情况下不起作用,因为标题元素在其他位置。我只举个简单的例子
  • 是可以修复的,但是需要你用实际的xml再次更新你的问题......对于多个节点,你需要循环进入每个节点......
【解决方案2】:

如果您正在处理未知的输入数据或生产代码,您应该使用 XML 解析器

如果您在测试环境中工作并且输入数据是已知的

$output = preg_replace('%<title>[^<]*</title>%', '', $input);

如果您需要允许标签上的属性,我建议使用真正的 XML 解析器,以获得最大的可靠性和最小的错误机会。

【讨论】:

  • 谢谢,但如果标题有属性?
  • 已更新。请注意警告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
相关资源
最近更新 更多