Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:使用XmlTextWriter清理XML文本值?_C#_Xml_Escaping_Sanitization_Xmltextwriter - Fatal编程技术网

C#:使用XmlTextWriter清理XML文本值?

C#:使用XmlTextWriter清理XML文本值?,c#,xml,escaping,sanitization,xmltextwriter,C#,Xml,Escaping,Sanitization,Xmltextwriter,我正在使用XmlTextWriter对我的一些数据进行序列化和持久化。我序列化的几个字段基于用户输入(例如用户名)。今天,我使用了XmlTextWriter的WriteElementString方法 我的问题是:WriteElementString的第二个参数是要写入的文本值。我如何在写作前对其进行消毒 示例代码: XmlTextWriter writer = new XmlTextWriter("filename.xml", null); writer.WriteStartElement("

我正在使用
XmlTextWriter
对我的一些数据进行序列化和持久化。我序列化的几个字段基于用户输入(例如用户名)。今天,我使用了
XmlTextWriter
WriteElementString
方法

我的问题是:
WriteElementString
的第二个参数是要写入的文本值。我如何在写作前对其进行消毒

示例代码:

XmlTextWriter writer = new XmlTextWriter("filename.xml", null);

writer.WriteStartElement("User");
writer.WriteElementString("Username", inputUserName);
writer.WriteElementString("Email", inputEmail);
writer.WriteEndElement();

writer.Close();
变量
inputUserName
inputEmail
是用户输入,我想在编写之前对它们进行清理/转义


实现这一目标的最佳方法是什么?

你需要什么来逃离那里
WriteElementString
将完成XML所需的所有转义操作(即
&
->
&;
,等等)

您可以保护这些值,因为这是使用XML时最安全的操作


在此之前,您应该通过
RegEx
或任何其他验证来检查值。

那么WriteElementString是完全安全的吗?(你这么说是有道理的,我只是不知道是这样)从某种意义上说它是“安全的”,即它保证输出是有效的XML,并且当你读回它时,你会得到相同的字符串。为什么要投反对票?CDATA是保持XML有效的最安全的方法,可以包含您希望包含的所有内容?CDATA根本不重要。这只是一种写文本而不需要逃避的方式。OP使用的代码将正确转义所有内容。作为CDATA编写的代码不会转义,但工作正常。