假设以下xml文档:
<?xml version="1.0"?>
<technicaldata template="123">
<name>
<![CDATA[Blub1]]>
</name>
<numbers>
<![CDATA[1
2
3
4
5]]>
</numbers>
<shortinfo>
<![CDATA[ha ha ha ha ha ha ha ha.]]>
</shortinfo>
<detailedinfo>
<![CDATA[hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi
hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi hi ]]>
</detailedinfo>
</technicaldata>
现在我可以通过simplexml加载文件;
$data='test.xml';
$inhalt = simplexml_load_file($data);
之后我想替换xml文件的所有部分中的一些特定字母 - 例如酒吧的所有外观都应该被foo取代...... 感谢这个伟大的社区,我知道它可以像这样循环:
foreach ($inhalt->children() as $child) {
$child= str_ireplace('bar', 'foo',$child);
}
问题是,如果我现在去,例如至 $ inhalt-&gt; shortinfo它不起作用......
但是如果我使用带有这样的回声的循环
foreach ($inhalt->children() as $child) {
$child= str_ireplace('bar', 'foo',$child);
echo $child;
}
然后替换明显起作用,但不幸的是,当前环循环结束时,变化会丢失; 我怎么能避免这种情况? 非常感谢!! :)
编辑:对不起,我说的是php ...:)答案 0 :(得分:1)
关于aggregate
隐藏的权力已经说了很多,这里有怎么做:
SimpleXml
请注意$inhalt = simplexml_load_string($x); // assume XML in $x
foreach ($inhalt->children() as $child) {
$child[0] = str_ireplace('bar', 'foo', $child);
}
echo $inhalt->asXML();
循环中的自引用$child[0]
。
这项技术有几个很好解释的答案,请参阅Remove a child with a specific attribute, in SimpleXML for PHP
请参阅上面的代码:https://eval.in/464546