DataSet.ReadXml没有获取所有数据

时间:2014-06-18 15:21:00

标签: c# xml 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 个答案:

答案 0 :(得分:0)

我意识到我忘记了DataSet拥有多个表,并且我只看到第一个包含根的表。虽然这确实帮助我理解解析器如何导航xml树。只有叶元素(没有子元素)被添加到表中,所有其他元素在数据集中获得自己的表。