将字符串加载到XML数据中

时间:2011-09-10 07:58:38

标签: c# xml

我正在开发一个应用程序,我正在读取文件,将内容转换为字符串,然后以XML格式加载字符串。但我面临的问题是,在将字符串数据加载到XML时,我得到了无效字符的异常。我正在使用以下代码。任何人都可以帮我解决这个问题。提前谢谢。

ZipFileEntry objContactXML;

String xmlData = ASCIIEncoding.UTF8.GetString(objContactXML.FileData);

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.LoadXml(xmlData);

此致 Sanchaita

1 个答案:

答案 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);
}