XML数据类型是以二进制xml表示形式传输的吗?

时间:2011-05-13 14:49:53

标签: .net sql-server

当使用command.ExecuteXmlReader()访问时,XMLDATA是以二进制xml dom表示形式传输,还是以xml字符串?传输?

文档链接将是完美的。

sql server和client端涉及哪些序列化/反序列化步骤?

更新:

问题不在于如何使用net framework提供的类。

它是关于在SQL Server连接上执行Adonet命令期间数据传输的内部细节,从而在结果集中生成XMLDATA列。

3 个答案:

答案 0 :(得分:0)

它返回一个XmlReader对象。虽然从对象获取字符串表示将是微不足道的。

http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.aspx

这是一个很好的链接,提供有关使用该类的其他信息。

http://msdn.microsoft.com/en-us/library/9d83k261.aspx

答案 1 :(得分:0)

有三个示例应用程序演示了在SQL Server Samples download at Codeplex中使用.NET中的XML数据类型。我相信你会觉得它们很有用。

安装示例后,请查看以下文件夹中的示例:C:\ Program Files \ Microsoft SQL Server \ 100 \ Samples \ Engine \ XML \ XmlManuInstructions

在代码文件的大约一半处,有一个演示如何将XML检索为XMLDocument对象。

更多信息:MSDN上的Sample XML Applications

答案 2 :(得分:0)

好的,这很有趣。我没有找到任何参考,但我确实用WireShark快速追踪。

格式是某种内部表示,可能是树结构。以下值:

<ErrorData>
  <Error>The provided value for ItemCode contains invalid characters (_).</Error>
</ErrorData>

遇到这样的电线:

00c0   b0 04 f0 09 45 00 72 00 72 00 6f 00 72 00 44 00  ....E.r.r.o.r.D.
00d0   61 00 74 00 61 00 ef 00 00 01 f8 01 f0 05 45 00  a.t.a.........E.
00e0   72 00 72 00 6f 00 72 00 ef 00 00 02 f8 02 11 40  r.r.o.r........@
00f0   54 00 68 00 65 00 20 00 70 00 72 00 6f 00 76 00  T.h.e. .p.r.o.v.
0100   69 00 64 00 65 00 64 00 20 00 76 00 61 00 6c 00  i.d.e.d. .v.a.l.
0110   75 00 65 00 20 00 66 00 6f 00 72 00 20 00 49 00  u.e. .f.o.r. .I.
0120   74 00 65 00 6d 00 43 00 6f 00 64 00 65 00 20 00  t.e.m.C.o.d.e. .
0130   63 00 6f 00 6e 00 74 00 61 00 69 00 6e 00 73 00  c.o.n.t.a.i.n.s.
0140   20 00 69 00 6e 00 76 00 61 00 6c 00 69 00 64 00   .i.n.v.a.l.i.d.
0150   20 00 63 00 68 00 61 00 72 00 61 00 63 00 74 00   .c.h.a.r.a.c.t.
0160   65 00 72 00 73 00 20 00 28 00 5f 00 29 00 2e 00  e.r.s. .(._.)...
0170   f7 f7 00 00 00 00 d1 0d 27 00 00 02 00 00 00 01  ........'.......

注意:

  • 标签名称包含在(unicode)文本中,但它们仅在打开时包含一次,而不是在打开和关闭时包含。
  • 文本节点内容包含在unicode文本中
  • 在附加的二进制流提取中,我没有清楚地了解数据实际开始的位置,因此很难对格式做出正确的猜测。

更新:嘿,很酷,找到了。我忘了格式叫做TDS:http://www.freetds.org/tds.html#login7。看起来您可以指定是否以二进制格式返回Xml,具体取决于它是否传递给ADO。

二进制Xml的文档:http://msdn.microsoft.com/en-us/library/ee208875.aspx