我是这里的新手,我试图搜索和替换一个XML文件中的字符串,如下所示:
<name>xxx.yyy_zzz</name>
<constructor_arguments />
<parameters>
<parameter>
<name>Name</name>
<string>
<value>yyy</value>
</string>
</parameter>
<parameter>
<name>abc</name>
<bool>
<value>false</value>
</bool>
</parameter>
<parameter>
<name>abcd</name>
<bool>
<value>true</value>
</bool>
</parameter>
<parameter>
<name>aa</name>
<integer>
<value>10</value>
</integer>
</parameter>
<parameter>
<name>bb</name>
<integer>
<value>100</value>
</integer>
</parameter>
<parameter>
<name>runtime_disabled</name>
<bool>
<value>false</value>
</bool>
我已经尝试了以下方法将runtime_disabled值更改为true,但没有发生我预期会发生的情况,有人能告诉我为什么会发生这种情况,并提供适当的解决方案使其正常工作吗
$data=~ s/(xxx\.i\yyy\_zzz\s*?<\/name>(.+?)runtime_disabled\s*?<\/name>\s*?<bool>\s*?<value>\s*?<value>.*?<\/value>)/$1true$2/g;
1条答案
按热度按时间7uzetpgm1#
解析格式良好的XML实际上 * 总是 * 应该使用模块来完成。关于这一点,人们已经说了很多,例如this page和this page,还有很多其他的例子。我也听说truly bad things may come to pass不是这样。
下面是一个如何使用XML::libXML完成任务的示例。另一个优秀的模块是XML::Twig。我完成了您的示例,使其成为一个格式良好的XML文件(如下所示的代码)。
这意味着是基本的,有相当多的其他方法来做同样的事情。
张贴的示例填充如下