如何更改某些不在后代元素中的内容?

时间:2013-08-05 15:25:47

标签: xml perl

我正在尝试修改XML文件中的内容。如果模式位于标记中,则不应转换。该文件其余部分中该模式的所有其他出现都应该被转换。

输入:

<abc>A change to a 1207.52 good of  <link>subheading 1207.91</link> from 
within that subheading or any 2004.92 other chapter.</abc>

在此,我计划将\d{4}\.\d{2}转换为<adi>\d{4}\.\d{2}</adi>。但<link>标签内的模式也会被修改。

预期产出:

<abc>A change to a <adi>1207.52</adi> good of  <link>subheading 1207.91</link> from 
within that subheading or any <adi>2004.92</adi> other chapter.</abc>

你们中的任何人都可以帮忙解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

@Adithya Kiran:将输入文件内容拖入变量$ document,然后执行以下操作 -

$document =~ s/(\d{4}\.\d{2})(?!(?:(?!<\/link>|<link>).)*<\/link>)/<adi>$1<\/adi>/isg;