如何在解析为XElement之前替换字符串中的所有&,<,>?

pod*_*eig 1 c# regex xml xml-parsing

我有这样的字符串

"<root><text>My test is > & < </text></root>"
Run Code Online (Sandbox Code Playgroud)

实际上这是正确的xml,除了&,<,>符号.

我需要将它转换为<root><text>My test is &gt; &amp; &lt; </text></root>我用XElement.Parse(str)转换它之前;

如何进行此转换?

Mar*_*rcE 7

如果您使用new XElement而不是XElement.Parse():XElement将自动转义文本:

LINQPad片段:

var str = "<root><text>My test is > & < </text></root>";
var element = new XElement("element", str);
element.Dump();
Run Code Online (Sandbox Code Playgroud)

输出:

<element>&lt;root&gt;&lt;text&gt;My test is &gt; &amp; &lt; &lt;/text&gt;&lt;/root&gt;</element>
Run Code Online (Sandbox Code Playgroud)

编辑:我已经重新阅读了这个问题,并意识到这不会产生所需的输出.

您遇到的问题是传入的XML字符串从根本上是无效的.如果你可以控制源,那么你应该在那里修复它.如果没有,那就没有简单的方法来修复它.