我有这个xml:
<Path>
<Record>
<ID>6534808</ID>
<Distance>1.05553036073736</Distance>
</Record>
<Record>
<ID>6542471</ID>
<Distance>1.05553036073736</Distance>
</Record>
... and about more 500 nodes
</Path>
我正在使用下面的代码获取所有“记录”节点:
XmlNodeList paths = xDoc.SelectNodes("//Record");
然后,我将每条记录保存到数据库。但是,问题在于我使用foreach循环遍历此节点,并且此节点的计数可能超过500,有时它会达到1000个“记录”节点。这太长了......
有没有办法保存所有这些节点而不通过它循环?
谢谢!
答案 0 :(得分:0)
也许您可以使用当前的for-each迭代,但我的建议是不要将数据保存到每次迭代的记录中。
首先创建insert语句,然后在一次行程中批量执行所有插入。这样效率更高。
另一方面,也许你正在使用一些OR / M.如果这是您的情况,并且您的选择是NHibernate,则它支持批处理命令。
您甚至还有另一种更清洁,更有效的解决方案:XSLT。
使用非常简单的XSLT将XML转换为SQL,而不是从C#迭代节点。使用该XSLT将XML解析为SQL是最快速和最佳的解决方案,您也可以一次性发送数据。