如何在C#中删除xml中的无效字符

本文关键字:无效 字符 xml 删除 | 更新日期: 2023-09-27 17:59:30

我有一个xml,它由很多文本组成,如下所示:

<EmployeeId>&EmpId;</EmployeeId>
<Department>&Dept;</Department>

我需要删除&字符,这样就可以使用合适的xml根据xsd对其进行验证。如何做到这一点?

如何在C#中删除xml中的无效字符

您也可以使用

创建节点时使用xml = "<myxmlnode>"+ SecurityElement.Escape(string) +"</myxmlnode>"

这将处理所有无效字符并对其进行转义。

我不建议仅仅为了"修复"问题而删除数据。将&字符添加到Xml数据的正确方法是&amp;。您可以使用XmlWriter或框架中的其他类来创建Xml,并让它为您确定格式。

您可以执行以下操作之一:

string content = System.IO.File.ReadAllText("PATH");
System.IO.File.WriteAllText("PATH", content.Replace("&", String.Empty));

string content = System.IO.File.ReadAllText("PATH");
System.IO.File.WriteAllText("PATH", content.Replace("&amp;", "&").Replace("&", "&amp;"));

"双重替换"是为了避免创建"&amp;"。

如果在XML中使用某些字符,则需要对其进行正确编码。amp;是其中之一。

看看这里,如果这些字符是XML中包含的数据的一部分,则需要对它们进行编码。

http://support.microsoft.com/kb/316063

我建议看一下XMLConvert类。您可以使用它对XML进行编码和解码,以确保其安全。这也将处理XML规范中定义的非法字符;amp实际上会更改下划线数据,因此您应该根据需要进行编码和解码。