DataSet.ReadXml не получает все данные
У меня есть относительно простой XML-файл, который я хотел бы использовать для заполнения DataSet. Я пытаюсь следующий код
using (DataSet ds = new DataSet())
{
ds.ReadXml(Server.MapPath("xmlFileName.xml"));
}
Но мой набор данных заканчивается только одной строкой, содержащей первый узел файла.
Я пробовал другие методы, такие как
XmlReader xmlFile = XmlReader.Create("xmlFileName.xml", new XmlReaderSettings());
DataSet ds = new DataSet();
ds.ReadXml(xmlFile);
А также
FileStream fsReadXml = new FileStream("xmlFileName.xml", FileMode.Open);
XmlTextReader xmlReader = new System.Xml.XmlTextReader(fsReadXml);
newDataSet.ReadXml(xmlReader, XmlReadMode.ReadSchema);
Оба из которых приводят к пустым наборам данных.
Я не могу опубликовать весь XML-файл, но его формат по существу
<service_orders count="70">
<service_order order_number="1111" id="111111">
<customer>
<customer_id>55555</customer_id>
<first_name>John</first_name>
<last_name>Doe</last_name>
<email>JohnDoe@gmail.com</email>
<phone1>55555555</phone1>
Первый метод, который я упомянул, генерирует только два столбца из этих "service_order_id" и "count" со значениями 0 и 70 соответственно. Похоже, это только первый узел?
Так что я не уверен, что я делаю не так с этими методами. Правильно ли отформатирован XML-файл? Нужно ли мне как-то заставить его углубляться в узлы? Есть ли способ, которым я могу указать, какие узлы ударить?
Любая помощь будет оценена, спасибо
1 ответ
Я понял, что забыл, что DataSets содержит несколько таблиц, и что я смотрю только на первую, которая содержит корень. Хотя это помогло мне понять, как анализатор перемещается по дереву xml. Только конечные элементы (без дочерних элементов) добавляются в таблицы, все остальные элементы получают собственные таблицы в наборе данных.