Когда я читаю файл 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 она есть.
Кто-то принял решение:
- если существует только 1 узел с данным именем тега под данным родительским тегом, он становится столбцом в таблице, названным родительским тегом.
- если существует более одного такого узла, он становится таблицей сам по себе
- если все дочерние узлы появляются более одного раза, а родительский узел является корнем документа, родительская таблица не создается
В чем причина №3?