将文件内容从 XML 文件转换为 UTF-16

问题描述 投票:0回答:1

在 C# 控制台应用程序中,我正在读取特定文件夹中的 XML 文件。

我从每个文件中获取内容作为字符串,并希望使用实体框架将其写入 SQL Server 表。

该表有三列:第一列是自动递增的

ID
,第二列是 GUID,第三列是
XML
文件的内容。

XML 文件内容的列的类型为

XML

当我尝试使用 XML 文件的内容向该表写入一行时,出现以下异常:

XML解析:第1行,第38个字符,无法切换编码

XML 文件的编码为 UTF-8,但我想我需要 UTF-16。

如何以正确的方式对文件内容进行编码?

欢迎任何帮助。

这是 XML 文件的典型标头:

<?xml version="1.0" encoding="utf-8"?>

这是我将文件内容写入 SQL Server 的代码:

public void WriteXmlTestFileToDatabase(string xmlFileContent)
{
    using (SqlServerDatabaseEntities db = new SqlServerDatabaseEntities())
    {
        var newEntry = new myTable();
        newEntry.FileGuid = Guid.NewGuid().ToString();
        newEntry.XmlDocument = xmlFileContent;

        db.myTable.Add(newEntry);
        db.Entry(newEntry).State = EntityState.Added;

        db.SaveChanges();   // Here I'm getting the exception
    }
}
c# sql-server xml visual-studio entity-framework
1个回答
0
投票

经过测试,我确认确实存在这个问题,但是可以通过删除XML声明来解决。删除声明不会影响XML文件的有效性,并且该文档仍然可以被XML解析器正确解析和处理。

var filecontext=File.ReadAllText("C:\\Users\\TestUser\\Desktop\\1.xml");
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(filecontext);
if (xmldoc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
{
    xmldoc.RemoveChild(xmldoc.FirstChild);
}

此代码读取 XML 文件,解析其内容,检查 XML 声明节点(例如 )是否存在,如果存在则将其删除。

FirstChild 属性用于访问 XML 文档的第一个节点。如果此节点是 XML 声明,则其 NodeType 将为 XmlNodeType.XmlDeclaration。

© www.soinside.com 2019 - 2024. All rights reserved.