无法通过SqlXml将SQL列集加载到XDocument中

时间:2015-05-28 14:38:19

标签: c# sql-server xml

我们有一个使用稀疏列和column set的数据表。当我们从这个表中查询数据时,我们只会带回几个关键列和列集列。

columnset列作为SqlXml字段类型返回,我想解析XML以将其转换为字典。但是,XML数据似乎没有很好地形成;每当我尝试这个时:

var columnSet = rdr.GetSqlXml(rdr.GetOrdinal("ColSet"));
if (!columnSet.IsNull)
{
    var xml = XDocument.Load(xmlData.CreateReader());

它引发了异常:

System.InvalidOperationException: This operation would create an incorrectly structured document.
  at System.Xml.Linq.XDocument.ValidateDocument(XNode previous, XmlNodeType allowBefore, XmlNodeType allowAfter)
  at System.Xml.Linq.XDocument.ValidateNode(XNode node, XNode previous)\r\n   at System.Xml.Linq.XContainer.AddNodeSkipNotify(XNode n)
  at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r)
  at System.Xml.Linq.XContainer.ReadContentFrom(XmlReader r, LoadOptions o)
  at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)   
  at System.Xml.Linq.XDocument.Load(XmlReader reader)   

如果我使用GetString()而不是GetSqlXml(),我肯定会找回无效的XML - 它没有根元素,我必须执行字符串操作才能将其加载到{{1 }}

是否有某种方法可以获取列集的XDocument值以生成有效的XML文档?

0 个答案:

没有答案