【发布时间】:2011-09-29 13:23:08
【问题描述】:
当我将 xml 文件读入数据集时,如果根节点有多个子标签,它不会为根节点创建表。为什么是这样?有没有什么方法可以在不修改xml的情况下让它生成根表?
static void Main(string[] args) {
var ds =Load(@"<root>
<Stores>Lambton Quay</Stores>
<Stores>Willis Street</Stores>
</root>");
var ds2 = Load(@"<root>
<t>1</t>
<Stores>Lambton Quay</Stores>
<Stores>Willis Street</Stores>
</root>");
Console.WriteLine("ds table count: {0}", ds.Tables.Count); //1 <- expecting 2
Console.WriteLine("ds2 table count: {0}", ds2.Tables.Count); //2
Console.ReadKey();
}
static DataSet Load(string xml) {
var xd = new XmlDocument();
xd.LoadXml(xml);
var ds = new DataSet();
ds.ReadXml(new XmlNodeReader(xd));
return ds;
}
编辑:
为了清楚,我想知道为什么 DataSet ds 没有 root 表而 ds2 有。
有人做出了决定:
- 如果在给定的父标签下仅存在一个具有给定标签名称的节点,则它成为表中由父标签命名的列。
- 如果存在多个这样的节点,它就会自己变成一张表
- 如果所有子节点出现多次且父节点是文档根,则不会创建父表
#3 的原因是什么?
【问题讨论】:
标签: c# system.data system.xml