如何在编写子元素后编写顶级XML元素值

时间:2010-07-28 07:19:02

标签: xml xmlwriter

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

我正在使用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)并以某种方式替换它们吗?那可能吗?我应该写&amp;关闭文件,重新打开它并用实际值替换标记?有没有办法在将XML写入文件之前用值替换标记?我没有在生成XML文件方面做太多工作,所以我不知道是否有一些标准的方法可以做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:0)

XmlWriter仅向前,因此您无法在文档的开头插入元素。一种可能性是对数据库执行两个SQL查询。第一个将汇总数据并返回您在开头写入的三个值,然后执行第二个查询以编写其余的值。这样,聚合(min,max,total)在数据库级别完成,您无需在代码中计算它们。

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