sql中有一个单元格到表中,其中存储varbinary(max)了类型的数据。这是一个 xml 文档字节数组。如何从所有这些中提取和保存一个完整的 xml 文档?
我通过这种方式得到这个细胞。(我不知道对不对)
SqlDataReader myReader = null;
SqlConnection myConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=test;Integrated Security=True");
String queryString = "SELECT TOP 1 planGrafik.[myXML] FROM planGrafik WHERE (regNum='03513000925' OR inn='5410126863') ORDER BY vNum DESC";
myConnection.Open();
SqlCommand command = new SqlCommand(queryString, myConnection);
myReader = command.ExecuteReader();
您应该已经能够从数据库中读取简单的值——在这种情况下,从那里获取 XML 并不困难。
首先,你需要得到一个字节数组:
现在我们需要从这组字节构建 XML。为此,您可以将它们包装起来
MemoryStream并从流中读取 XML:如果您更喜欢使用 XLinq,这
MemoryStream也很好:另外,我注意到初步转换为字符串的方法是不正确的——因为不可能事先知道 XML 是用什么编码编写的(根据标准的 XML 编码在 XML 声明中指示)。另外,使用UTF-8先转为字符串时,文件开头的BOM可能有问题。
如果出于某种原因,数据库包含未指定编码的 XML 文档,您可以将其包装
MemoryStream在StreamReader:但在这种情况下,我建议将列类型从更改
varbinary为nvarchar!和他一起工作会更容易:我们用真实数据替换三角括号中的所有内容(括号也是 nafig)。