![使用父节点的值替换 XML 子节点的值](https://linux22.com/image/1635198/%E4%BD%BF%E7%94%A8%E7%88%B6%E8%8A%82%E7%82%B9%E7%9A%84%E5%80%BC%E6%9B%BF%E6%8D%A2%20XML%20%E5%AD%90%E8%8A%82%E7%82%B9%E7%9A%84%E5%80%BC.png)
我有一个 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
截图(之前):
截图(之后):