(底部的TLDR)
我们有一个遗留系统,该系统已实现了自己的XML读取器/写入器。问题在于它允许在属性值中使用文字“&”。
<SB nae="Name" net="HV & DD"/>
当我使用XDocument.Parse()方法读取数据时,这当然会失败。我正在研究清理数据的方法。
我正在尝试使用正则表达式来确定发生这种情况的情况。 为了说明这一点,请考虑以下问题:
&(?!amp\;)
这将以负的前瞻性标识“&”号,以确保它实际上不是正确转义的“&”号。确定这些情况后,可以用适当的&
代替当然,存在一个问题,它将与其他转义的字符(例如&gt&lt&quot等)匹配,因此我也需要取消匹配这些字符。也许使用更通用的形式,例如正则表达式不匹配的“&”号,后跟2-4个字符,然后是分号。
但是我担心的是,还有其他我不曾想到的“&”号案例,这些案例在我获得的少数样本中没有体现。我正在寻找一种不会弄乱适当xml的安全方法。
TLDR:如何识别不属于适当xml的“&”符号,但属性值中未转义的“&”符号的情况?
答案 0 :(得分:2)