0

我在这里寻找有关我的问题的智能解决方案的建议。

我正在使用 XMLWriter 类编写 XML 文档,并以只进的方式从 ADO.NET DataReader 中读取数据。在我的 XML 文件的顶部,我需要有这样的元素:

<datefrom>2010-07-08</datefrom>
<dateto>2010-07-10</dateto>
<total>335.00</total>

<datefrom>需要是在数据中找到的最早日期。 <dateto>是最晚的日期。 是文档后面列出<total>的所有元素的总和。<totalpaid>115.00</totalpaid>

当我在文件中创建/写入 XML 元素时,我可以跟踪更早/最新的日期,并且可以继续将所有<totalpaid>金额加在一起以获得总数。

但...

一旦我到达我的 DataReader 的末尾,您会如何建议将这些值放入 XML 文件顶部的元素中?我是否应该将替换标记作为开始和结束标记之间的值(即@datefrom、@dateto、@total)并以某种方式替换它们?那可能吗?我应该写入并关闭文件,重新打开它并用实际值替换标记吗?在将 XML 写入文件之前,有没有办法用值替换标记?我在生成 XML 文件方面工作不多,所以我不知道是否有一些标准的方法可以做到这一点。

谢谢!

4

1 回答 1

0

XmlWriter是只进的,因此您不能在文档的开头插入元素。一种可能性是对您的数据库执行两个 SQL 查询。第一个将聚合数据并返回您在开始时编写的三个值,然后执行第二个查询以编写其余部分。这样,聚合(最小值、最大值、总计)在数据库级别完成,您无需在代码中计算它们。

如果你不能这样做,你可以使用XDocument,它允许你在任何地方插入节点,但它在内存中拥有整个文档,如果文档很大,这可能是不可接受的。

于 2010-07-28T07:26:35.650 回答