【发布时间】:2020-05-01 14:28:44
【问题描述】:
我编写了一个正则表达式来更改一些 XML 节点 - 采用通用节点名称并将其替换为节点属性值,如下所示: 正则表达式
<custom-attribute attribute-id="(.*)?"\s*(>*)(.*?)</custom-attribute>
对于以下 xml:
<custom-attribute attribute-id="isNewtest">false</custom-attribute>
使用替换正则表达式
<$1>$3</$1>
输出
<isNewtest>false</isNewtest>
这是我正在寻找的 - 然而 - 一旦不止一个节点被引入到架构中 - 例如
<custom-attribute attribute-id="isNewtest">false</custom-attribute>
<custom-attribute attribute-id="isAnotherNewtest">false</custom-attribute>
我运行正则表达式,输出为:
<isNewtest">false</custom-attribute>
<custom-attribute attribute-id="isAnotherNewtest>false</isNewtest">false</custom-attribute>
<custom-attribute attribute-id="isAnotherNewtest>
这不是我所期待的,而是我所希望的:
<isNewtest>false</isNewtest>
<isAnotherNewtest>false</isAnotherNewtest>
我显然错过了一次搜索多个节点或多行选择器的内容? - 有人能指出我正确的方向吗?我必须重组一个 20,000 行的 xml 文档,而不是喜欢逐行手动执行它的想法。
【问题讨论】:
-
这是解析 XML 应该使用专用解析器的原因之一。