我们有一个使用稀疏列和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文档?