我正在开发一个应用程序,我正在读取文件,将内容转换为字符串,然后以XML格式加载字符串。但我面临的问题是,在将字符串数据加载到XML时,我得到了无效字符的异常。我正在使用以下代码。任何人都可以帮我解决这个问题。提前谢谢。
ZipFileEntry objContactXML;
String xmlData = ASCIIEncoding.UTF8.GetString(objContactXML.FileData);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlData);
此致 Sanchaita
答案 0 :(得分:4)
首先,这是一段讨厌的代码:
ASCIIEncoding.UTF8
请仅使用Encoding.UTF8
- 它是UTF-8,而不是ASCII。
现在,您可以围绕XML文本数据创建StringReader
- 但实际上最好不要将其转换为字符串数据。它可以用UTF-8以外的其他东西编码 - 而XML解析器知道如何处理它。完全有可能这就是您遇到当前方法问题的原因。将数据保留为二进制并解析:
using (MemoryStream stream = new MemoryStream(objContactXML.FileData))
{
document.Load(stream);
}
顺便说一句,如果您使用的是.NET 3.5或更高版本,我会强烈建议您使用LINQ to XML(XDocument
等)而不是旧的DOM API。 LINQ to XML是一个很多更好的API。
在LINQ to XML中,您将使用:
XDocument document;
using (MemoryStream stream = new MemoryStream(objContactXML.FileData))
{
document = XDocument.Load(stream);
}