【发布时间】:2021-07-29 22:01:21
【问题描述】:
我正在尝试将从流中读取的 xml 文件插入到 mssql 服务器中的 xml 类型的列中 像这样:
//从流中读取文件
var reader = new StreamReader(request.InputStream, Encoding.UTF8);
var string = reader.ReadToEnd();
//转换为xmldoc
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(string);
//尝试使用xmlDoc将其插入到表中
using (SqlConnection con = new SqlConnection(_connectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(
@"INSERT INTO [XMLTable] (XmlData) VALUES(@XmlData);", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@XmlData", xmlDoc.InnerXml);
cmd.ExecuteScalar();
}
}
//示例xml:
<?xml version="1.0" encoding="utf-8"?>
<ChangeSSNR version="1.0" xmlns="http://schemas.testschema.com/ChangeSSNR/1.0/">
<Header version="1.0">
<From>someone</From>
<To>someoneelse</To>
<TimeStamp>1900-01-01T01:01:01+01:00</TimeStamp>
<ppnSchema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true" />
</Header>
<ChangeSSNRid id="4294967295">
<SSNRChange>
<NewSSNR>09834098098</NewSSNR>
<OldSSNR>9879879827345</OldSSNR>
</SSNRChange>
</ChangeSSNRid>
<ChangeSSNRid id="42949367295">
<SSNRChange>
<NewSSNR>098340980983</NewSSNR>
<OldSSNR>98798798273453</OldSSNR>
</SSNRChange>
</ChangeSSNRid>
</ChangeSSNR>
遇到异常:XML 解析:第 1 行,第 38 个字符,无法切换编码
亲切的问候
/鲁迪
【问题讨论】:
-
请更新您的问题,并添加 XML 示例。我敢打赌,它有用于 SQL Server 的带有“坏”编码的 XML prolog 声明。
-
另外,代码 sn -p
xmlDoc.LoadXml(inläst);正在使用未知变量。
标签: c# sql-server xml xml-parsing sqlxml