我有一种情况,我必须根据来自 DB 的数据生成一些 XML 文件。存储在数据库中的数据结构是问题所在。实际上,所有 TAG 及其值都存储在一个表中,该表还包括关闭 TAG。
例如,考虑以下将生成的 XML:
<x>
<y>
<a>cc</a>
<b></b>
</y>
<y>
<a>oo</a>
<b>kk</b>
</y>
</x>
现在这个 XML 的数据存储在 DB 中,如下所示:
IS_CONTAINER TAG_NAME TAG_VALUE
------------ -------- ---------
1 x NULL
1 y NULL
0 a cc
0 b NULL
1 /y NULL
1 y NULL
0 a oo
0 b kk
1 /y NULL
1 /x NULL
这IS_CONTAINER = 1
意味着标签包含子标签,并且它的结束标签出现在记录中。比如x
& y
。这IS_CONTAINER = 0
意味着它是一个没有子元素的单个 XML 元素,所以我必须在设置它的值后关闭/附加它的关闭标签。比如a
& b
。
我想我不能使用,因为我每次XmlTextWriter
都必须显式调用它的WriteStartElement
&方法。WriteEndElement
它会变得不必要的复杂,因为我必须跟踪哪些元素以“\”开头,这意味着我必须关闭一些以前打开的元素。
我可以TextWriter
在读取每一行时将数据写入文件,然后在写入文本文件之前将“<”和“>”字符附加到每个TAG_NAME
文件中,但这也意味着我必须将<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
自己写为第一个文件的行。一切都将手动完成。
我希望你知道问题是什么。
如果我遗漏了什么,你们能推荐我一些好的方法吗?