C#XmlDocument无法读取utf-16文件

在尝试使用XmlDocument.Load()方法读取utf-16编码的XML文件时,出现'根级别上的数据无效。 第 1 行,位置 1。'的异常。解决方案包括修改XML文件编码为utf-8,但考虑系统稳定性不可行;以Unicode编码方式处理,同样可能影响稳定性;或采用读取文件为字符串,然后用LoadXml()方法加载到XmlDocument中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

异常:"根级别上的数据无效。 第 1 行,位置 1。"

使用 XmlDocument.Load(path); 方法来读取一个encoding为utf-16的xml时,就报了以上异常。

Xml文件:

<?xml version="1.0" encoding="utf-16"?>
<DataProviders>
	<Provider
		Name="A"
		Type="OleDataProvider"
		ConnectionString="Provider=SQLOLEDB.1;Password=xx;User ID=sa;Data Source=192.168.1.x\SQL2008;Initial Catalog=xxx" />
	<Provider
		Name="B"
		Type="SubSonic.SqlDataProvider, SubSonic"
		ConnectionString="Password=xx;Persist Security Info=True;User ID=sa;Database=xx;Data Source=192.168.1.x\SQL2008" />
</DataProviders>
在网上找了一下都不知道怎么解决。经过摸索以及Msdn上的启发,得出以下解决方案:

1. 将 uft-16 修改成 utf-8

这是最简单的方式,但是由于我们项目中该xml文件已经在客户进行了部署,并且系统其他地方也都有对该文件进行操作,为了保证系统稳定性,这种方式只能被抛弃。

2. 将 xml 文件编码修改成 Unicode

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值