如果xmlnode具有属性,则无法将xml导入数据集?

时间:2009-12-13 06:44:42

标签: c# xml linq

我使用以下代码将xml文件读取到c#:

中的datagridview
newDataSet.ReadXml(filepath);
dataGridView3.DataSource = newDataSet;
dataGridView3.DataMember = "aaa";

我的xml文件如下所示:

<root>
   <aaa>
      <Param_1>1</Param_1>
      <Param_1>2</Param_1>
      <Param_1>3</Param_1>
   </aaa>
</root>

我可以毫无问题地读取xml到数据集。然后我加了一些 属性到<Param>节点,因此它变为

<Param_1 size="2">1</Param_1>

数据集无法显示任何xml数据,有谁知道原因?

此外,如果我将我的xml文件更改为:

<root>
   <Data_1>
    <Name>aaa</Name>
    <Params>
      <Param_1>1</Param_1>
      <Param_1>2</Param_1>
      <Param_1>3</Param_1>
    </Params>
   </Data_1>
</root>

是否仍然可以使用DataSet方法将它们读入数据网格视图,或者我必须使用像linq这样的东西?

如果必须,有人可以告诉我如何使用linq做到这一点吗?

2 个答案:

答案 0 :(得分:2)

我建议您将数据读取到xml文档并使用XmlDataSource绑定到它,而不是DataSet。并验证结构是否正确绑定。查看您的评论(不是由John编辑,而是在您提问的评论中,没有/符号应该在结束标记中:</Data_1>

或者将结构更改为您希望的任何结构,只要它适合您的绑定。之后,您可以阅读数据:

DataSet ds = new DataSet();
ds.ReadXml("XMLFile1.xml", XmlReadMode.InferSchema);

关于Linq:你可以从阅读Getting Started with LINQ in C#开始。但无论如何你不应该创建复杂的xml结构 - 使它变得复杂会为你提供很多工作来处理它。

答案 1 :(得分:0)

DataSet不是使用XML的通用机制。如果DataSet不会生成XML,则无法导入该XML。