Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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#StreamReader检测与维护#x2;XML文件的编码_C#_.net_Xml - Fatal编程技术网

C#StreamReader检测与维护#x2;XML文件的编码

C#StreamReader检测与维护#x2;XML文件的编码,c#,.net,xml,C#,.net,Xml,在我的xml文件中,我有如下数据: <Data> <Field> <Name>BarcodeCapture_0</Name> <Type>SimpleIndex</Type> <DataType>DataMatrix</DataType> <Value>DEA&#x2;"&#x1;¡CV°)Ñ

在我的xml文件中,我有如下数据:

<Data>
    <Field>
        <Name>BarcodeCapture_0</Name>
        <Type>SimpleIndex</Type>
        <DataType>DataMatrix</DataType>
        <Value>DEA&#x2;"&#x1;¡CV°)Ñ     &#x2;võ Fƒ´     20100410050</Value>
    </Field>
</Data>
问题是StreamReader无法检测到;编码,因此无法删除此字符,Xml反序列化失败。

尝试:

using (var sr = new StreamReader("XMLFile1.xml", Encoding.UTF8))
using (var xtr = new XmlTextReader(sr))
{
    XmlSerializer s = new XmlSerializer(typeof(ScanTransaction));
    ScanTransaction result = (ScanTransaction)s.Deserialize(xtr);
}
您甚至不需要“特殊的”
StreamReader
XmlTextReader
不检查非法字符(您可以使用
Normalize
布尔属性控制,但默认情况下它是
false
,因此不检查非法字符)

尝试:

using (var sr = new StreamReader("XMLFile1.xml", Encoding.UTF8))
using (var xtr = new XmlTextReader(sr))
{
    XmlSerializer s = new XmlSerializer(typeof(ScanTransaction));
    ScanTransaction result = (ScanTransaction)s.Deserialize(xtr);
}

您甚至不需要“特殊的”
StreamReader
XmlTextReader
不检查非法字符(您可以使用
Normalize
布尔属性控制它,但默认情况下它是
false
,因此不检查非法字符)

只是建议:将任何编码的字符串转换为字节数组,然后转换为base64字符串,xml只存储base64字符串和编码类型。转换回来是安全的。反序列化不同于原始数据的数据真的是个好主意吗?您正在删除“非法”xml字符。。。但它们存在于原始数据中…@xanatos是的,因为原始数据在反序列化后被清除,我将数据发送到服务器。如果不这样做,问题是整个过程都被阻塞了。建议:将任何编码的字符串转换为字节数组,然后转换为base64字符串,xml只存储base64字符串和编码类型。转换回来是安全的。反序列化不同于原始数据的数据真的是个好主意吗?您正在删除“非法”xml字符。。。但它们存在于原始数据中…@xanatos是的,因为原始数据在反序列化后被清除,我将数据发送到服务器。问题是如果你不这样做,整个过程都会被阻塞
using (var sr = new StreamReader("XMLFile1.xml", Encoding.UTF8))
using (var xtr = new XmlTextReader(sr))
{
    XmlSerializer s = new XmlSerializer(typeof(ScanTransaction));
    ScanTransaction result = (ScanTransaction)s.Deserialize(xtr);
}