如何将datatable转换为xml?

时间:2012-04-23 08:58:27

标签: xml linq datatable

即使有很多例子,我找不到我需要的东西?我的问题就像标题“如何将数据表转换为xml”...

虽然,您可以在任何技术中推荐解决方案,但我也有一个起点,请看一下这段代码。

    Dim xmlDoc As New XDocument(
                    New XElement("Class",                                   
                                From row In dt.AsEnumerable()
                                Select New XElement("PUPIL",
                                    New XAttribute("FIRSTNAME", row.Field(Of String)("First Name")),
                                    New XAttribute("LASTNAME", row.Field(Of String)("Last Name")),
                                    New XAttribute("DOB", row.Field(Of String)("DoB")),
                                    New XAttribute("YEAR", row.Field(Of String)("Year")),
                                    New XAttribute("SEX", row.Field(Of String)("Gender")),
                                    New XAttribute("CLASSNAME", row.Field(Of String)("Reg"))
                                )))))

在这个例子中,我需要知道要进行转换的列数和列名。我讨厌将列名硬编码到Linq中,是否可以在Linq中使用任意数量的列和列名?

如果有人可以建议我改进Linq以处理数据表中的任何列,那将是很棒的。

非常感谢。

LINQ解决方案......

    Dim xmlDoc As New XDocument(                       
         From row In dt.Rows
         Select New XElement("Pupil",
         From column In dt.Columns
         Select
         New XAttribute(column.ToString, row.Item(column.ToString))))

对于Datatable.WriteXML解决方案,请参阅Habib的帖子

1 个答案:

答案 0 :(得分:2)

您可以使用:DataTable.WriteXML();

代替LINQ
        DataTable dt = new DataTable();
        dt.WriteXml("myxmlfile.xml");

如果要根据Schema读取和写入数据,请执行以下步骤:

  • 我相信你在DataTable中有数据,你可能还有一个数据的xml,在visual studio中打开XML,使用 - >生成模式;在菜单选择 - > XML - >创建架构
  • 这将生成一个模式文件,保存该模式文件,例如test1.xsd
  • 请尝试以下代码

    DataSet ds = new DataSet();
    ds.ReadXmlSchema("test1.xsd"); //This will read and prepare dataset according to tes1.xsd schema
    ds.ReadXml("test.xml"); // This will read the XML and it should be schema compliant 
    ds.WriteXml("test7.xml");//This will write the new XML according to schema
    

    在您的情况下,您可以根据需要修改架构,然后您可以使用XML架构生成从Dataset到XML的文档。您必须首先将数据表保存在数据集中。 (我对这种方法不太确定,但由于我没有看到对这个问题的新回复,我认为这对你有所帮助)