【发布时间】:2016-02-07 20:20:42
【问题描述】:
假设以下 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 文件所有部分中的一些特定字母 - 例如bar 的所有外观都应替换为 foo... 感谢这个伟大的社区,我知道它可以使用这样的循环:
foreach ($inhalt->children() as $child) {
$child= str_ireplace('bar', 'foo',$child);
}
问题是,如果我现在去,例如到 $inhalt->shortinfo 它没有工作艰难...
但是如果我使用带有这样的回声的循环
foreach ($inhalt->children() as $child) {
$child= str_ireplace('bar', 'foo',$child);
echo $child;
}
然后替换显然有效,但不幸的是,当 forech 循环完成时,更改会丢失; 我怎样才能避免这种情况? 非常感谢!! :)
编辑:对不起,我谈论的是 php... :)
【问题讨论】:
-
在循环中使用引用:
foreach(... as &$child)...注意&。 -
嘿..感谢您的帮助...这样做很遗憾,我遇到了一个错误;致命错误:第 12 行 C:\xampp\htdocs\getxmldata.php 中的引用无法将迭代器与 foreach 一起使用
-
啊 - 带有 simple-xml 的 xml - 我刚刚看到循环...;如果您想修改 xml 文档,我建议改用 DOM-API。 php.net/manual/en/book.dom.php
-
所以没有机会使用 simplexml 实现它?因为整个脚本已经在它上面构建了...