4

xmlファイルを解析してコマンドを実行するPythonスクリプトがあります。xml別のxmlファイルを読み取って編集したい。そのために私はperlコマンドを使用しました

"perl -pi -0777 -e 's@<en:TagName>.*?</en:TagName>@<en:TagName>new-value</en:TagName>@sg'FileName.xml"

これは、シェルスクリプトによって解析されるxmlファイルに追加しました。

<cmd>perl -pi -0777 -e 's@<en:TagName>.*?</en:TagName>@<en:TagName>new-value</en:TagName>@sg'FileName.xml</cmd>

ここで私のPythonスクリプトは<en:TagName>タグとして扱われており、それを解析できません。そこで"perl -pi -0777 -e 's#&lt;en:TagName&gt;.*?&lt;en:TagName&gt;#&lt;en:tagName&gt;new-value&lt;/en:TagName&gt;#sg' FileName.xml" 、区切り文字として「#」を追加して使用しました(@は、使用しているシェルスクリプトの特殊文字であるため)

#を入力しても、目的の結果を得ることができません。置き換える代わりに、最後に新しい値を追加します。

4

1 に答える 1

4

perlコマンドをCDATAタグで囲みます。

Some text, like JavaScript code, contains a lot of "<" or "&" characters. To avoid errors script code can be defined as CDATA.

Everything inside a CDATA section is ignored by the parser.

A CDATA section starts with "<![CDATA[" and ends with "]]>"
于 2012-12-19T10:00:05.787 に答える