【发布时间】:2010-07-19 20:31:24
【问题描述】:
我对 Linq to SQL 和 Linq to XML 还很陌生,但我拼凑了一些代码,将存储过程中的 XML 结果放入 XElement。但是,它开始失败,显然现在 XML 数据变得越来越大(2K+)并且我的 .Parse 正在读取截断的 XML(XML 数据以两行返回)。在我开始使用 xmlReaders 和所有这些摸索杂草之前,也许我看错了,有更好的方法。
我的确切问题如下,但我也很好奇任何标准的 Linq 习语来做这类事情。
我得到的具体错误是
System.Xml.XmlException:意外 解析名称时文件结尾有 发生了。第 1 行,位置 2034。
我的 C# 代码是这样的
XDocument orders = new XDocument(from b in db.GetUserOrders(userid)
select XElement.Parse(b.XML_F52E5B62_58B1_21e2_B105_00805A49AB12));
存储过程看起来像
select * from orders where userid = @userid order by tscreated
for xml raw('order'), ROOT('orders')
从存储过程返回的 XML 看起来像
<orders>
<order OrderId="123" UserId="bob" tscreated="2010-07-16T16:46:46.173">
<morexml>
<element1>
<element2>abc</element2>
<!--more stuff-->
</element1>
</morexml>
</order>
<!--lots more orders-->
</orders>
【问题讨论】:
-
xml 结果有多大?到目前为止,一切看起来都很正常......
-
可能非常大,即。几K。看起来xml在两行中返回,所以我可能需要某种阅读器或迭代器或其他东西,但在将某些东西混在一起之前,我很好奇这样做的“正确”方法是什么。谢谢。
-
是的,您需要读取所有行并将它们连接起来。
-
我遇到了几乎完全相同的问题。有没有机会解决这个问题,您可以发布解决方案吗?
-
@EthanTowne,我忘记了这一点,所以发布了我想出的答案。已经有一段时间了(4.5 年),所以我的记忆很模糊。
标签: c# linq linq-to-sql linq-to-xml