【发布时间】:2017-02-23 20:02:14
【问题描述】:
我有一个属性值没有双引号的 XML 文件。以下是一个示例。如您所见,这些是可能的值,我尝试使用正则表达式 *=\s*([^" >]+) 并替换为 ="\1",这在大多数情况下都有效,但有两个问题。
任何有关这些的帮助将不胜感激。
- 它不会用双引号(“”)替换空值(例如.status)。
- 只有当值有句子时才会替换第一个单词。eg(description)
示例输入:
<tool id=2 code=abc description=my description end here my_levels=$15,000/$30,000 individual_level= amount=0 status= my_code=P my_date=2017-02-21T00:00:00 points= />
预期结果:
<tool id="2" code="123abc" description="my description end here" my_levels="$15,000/$30,000" individual_level="" amount="0" status="" my_code="P" my_date="2017-02-21T00:00:00" points="" />
【问题讨论】:
-
您可能无法使用正则表达式解决此问题。无效 XML 的生成丢弃了一些信息。存在无法解决的歧义,因为可以想象属性值可能包含等号字符(您不能确定它们不包含)。唯一合理的解决方案是在源处修复 XML 的生成,这是明确知道属性值的地方。
-
我确信我们在 xml 中没有 = 值。
标签: regex xml notepad++ xml-attribute find-replace