2014-06-18 3 views
0

У меня есть относительно простой xml-файл, который я хотел бы использовать для заполнения DataSet. Я пытаюсь следующий кодDataSet.ReadXml не получает все данные

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>[email protected]</email> 
     <phone1>55555555</phone1> 

Первый метод я уже генерирует только два столбца из этого «service_order_id» и «считать» со значениями 0 и 70 соответственно. Кажется, что это только удар по первому узлу?

Так что я не уверен, что я делаю неправильно с этими методами. Правильно ли форматируется XML-файл? Должен ли я каким-то образом заставить его углубиться в узлы? Есть ли способ указать, какие узлы попали?

Любая помощь будет оценена, Спасибо

ответ

0

я понял, что забыл, что DataSets содержать несколько таблиц, и что я только смотрел на первый, который содержал корень. Хотя это помогло мне понять, как синтаксический анализатор перемещается по дереву xml. В таблицы добавляются только элементы листа (без детей), все остальные элементы получают таблицы в наборе данных.

+0

Наличие нескольких элементов с одним и тем же именем в корне создает таблицу в вашем наборе данных, например, ' John John' – DerpyNerd

Смежные вопросы