(TLDR внизу)
У нас есть устаревшая система, в которой реализована собственная программа чтения / записи XML.Проблема в том, что он допускает буквальное «&» внутри значения свойства.
<SB nae="Name" net="HV & DD"/>
Когда я читаю данные с использованием метода XDocument.Parse (), это, конечно, не получается.Я смотрю на способы очистки данных.
Я пытаюсь использовать регулярные выражения для выявления случаев, когда это происходит.Чтобы проиллюстрировать это, рассмотрим следующее:
&(?!amp\;)
Это будет идентифицировать амперсанд с отрицательным прогнозом, чтобы убедиться, что это не правильно экранированный амперсанд.Когда я идентифицировал эти случаи, я могу заменить их на правильный &
. Конечно, есть проблема, что это будет соответствовать другому экранированному символу, такому как <<и т. Д., Поэтому я также должен сопоставить их. Возможноиспользуя более общую форму, такую как регулярное выражение, не сопоставляя амперсанд, за которым следуют 2-4 символа и затем точку с запятой. </p>
Но меня беспокоит то, что существуют другие случаи амперсандов, о которых я не думаю и которые не представлены внесколько образцов, которые я получил. Я ищу безопасный способ, который не испортит надлежащий xml.
TLDR: Как определить амперсанды, которые не являются частью надлежащего xml, но являются случаяминеэкранированные амперсанды в значениях свойств?