使用父节点的值替换 XML 子节点的值

使用父节点的值替换 XML 子节点的值

我有一个 xml 文件,我想用父节点中的一些文本替换子节点中的文本。这在 notepad++ 中可行吗?还是我需要使用其他程序或编写代码?这是一个示例 xml:

<output name="Element_152"">
  <field name="NAME" key="true">Unit001</field>
  <field name="Element">sdf56sd4sdfs54ds</field>
</output>
<output name="Element_153"">
  <field name="NAME" key="true">Unit002</field>
  <field name="Element">s454f6s4fsdf54s</field>
</output>

我想将 的值更改<field name="Element">为 的属性<output name=..>,因此我将得到:

<output name="Element_152"">
  <field name="NAME" key="true">Unit001</field>
  <field name="Element">Element_152</field>
</output>
<output name="Element_153"">
  <field name="NAME" key="true">Unit002</field>
  <field name="Element">Element_153</field>
</output>

谢谢。

答案1

假设双双引号是拼写错误,并且没有其他属性,则可以执行以下操作:

  • Ctrl+H
  • 找什么:<output name="(\w+)">.+?<field name="Element">\K.+?(?=</field>)
  • 用。。。来代替:$1
  • 查看 相符
  • 查看 环绕
  • 查看 正则表达式
  • 查看 . matches newline
  • Replace all

解释:

<output name="              # start tag
(\w+)                       # group 1, 1 or more word character, the name value
">                          # close tag
.+?                         # 1 or more any character, not greedy
<field name="Element">      # literally
\K                          # forget all we have seen until this position
.+?                         # 1 or more any character, not greedy
(?=</field>)                # positive lookahead, make sure we have a closing tag after

替代品:

$1          # content of group 1, tthe value of the name attribute

截图(之前):

在此处输入图片描述

截图(之后):

在此处输入图片描述

相关内容