如果 XML 是在程序内部生成的,那么最好将其保存在 中nvarchar(max),以免给自己造成编码问题。
如何在数据库中保存数据,希望作者自己想办法。但是在将它们保存在那里之前,您必须先获取它们。
将 XML 文档转换为字符串非常简单:
XmlDocument doc = ...;
var xmlstr = doc.OuterXml;
XDocument doc = ...;
var xmlstr = doc.ToString();
然而,将整个文档存储为字符串通常是没有意义的——存储其根元素就足够了:
XmlDocument doc = ...;
var xmlstr = doc.DocumentElement.OuterXml;
XDocument doc = ...;
var xmlstr = doc.Root.ToString();
第二种方法将“截断”通常很容易恢复的 XML 声明。反向转换不会受到任何影响,因为根元素本身仍然是一个有效文档。
如果您决定将文档存储为字节数组,事情会变得有点复杂:
XmlDocument doc = ...;
var ms = new MemoryStream();
doc.Save(ms);
var bytes = ms.ToArray();
XDocument doc = ...;
var ms = new MemoryStream();
doc.Save(ms);
var bytes = ms.ToArray();
如果需要指定特定的编码,可以使用StreamWriter:
XmlDocument doc = ...;
var ms = new MemoryStream();
using (var writer = new StreamWriter(ms, Encoding.ВашаКодировка))
doc.Save(ms);
var bytes = ms.ToArray();
XDocument doc = ...;
var ms = new MemoryStream();
using (var writer = new StreamWriter(ms, Encoding.ВашаКодировка))
doc.Save(ms);
var bytes = ms.ToArray();
首先,您需要决定用于存储的数据库模式。为此,有必要回答“XML 从何而来”这个问题?
如果用户可以将文档加载到数据库中,那么最好将其存储为存储任何文件的问题 - 即,将其存储在 中
varbinary(max),加上单独的文件名列作为字符串,加上列用于存储文件属性,例如创建/修改日期。如果 XML 是在程序内部生成的,那么最好将其保存在 中
nvarchar(max),以免给自己造成编码问题。如何在数据库中保存数据,希望作者自己想办法。但是在将它们保存在那里之前,您必须先获取它们。
将 XML 文档转换为字符串非常简单:
然而,将整个文档存储为字符串通常是没有意义的——存储其根元素就足够了:
第二种方法将“截断”通常很容易恢复的 XML 声明。反向转换不会受到任何影响,因为根元素本身仍然是一个有效文档。
如果您决定将文档存储为字节数组,事情会变得有点复杂:
如果需要指定特定的编码,可以使用
StreamWriter:最简单的方法:
编码:
这种方法的缺点是这样的 xml 将是“死数据”,使用它只能在客户端上工作。最好为 XML 列设置类型(如果您的数据库支持 - 例如 MS SQL 和 MySQL),那么就可以在服务器上使用它,但这是一个单独的非常广泛的主题,这也取决于您的数据库。
此外: