C# VB.NET是否可以读取XML或Can';不是吗?

C# VB.NET是否可以读取XML或Can';不是吗?,c#,asp.net,xml,vb.net,C#,Asp.net,Xml,Vb.net,问题: 使用VB.NET/C#,如果不做大量工作,是否真的不可能在数据集中读取以下XML 我试过了 oDataSet.ReadXml(strFileName)<BR> 但所有这些都是在我的数据集中放一行一个单元格,内容是“2010-02-12T10:33:39” 这让我快发疯了。。。 这是XML文件: <?xml version="1.0" encoding="UTF-8"?> <dataroot generated="2010-02-12T10:33:39"&g

问题: 使用VB.NET/C#,如果不做大量工作,是否真的不可能在数据集中读取以下XML

我试过了

oDataSet.ReadXml(strFileName)<BR>
但所有这些都是在我的数据集中放一行一个单元格,内容是“2010-02-12T10:33:39”

这让我快发疯了。。。

这是XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<dataroot generated="2010-02-12T10:33:39">
<Employee>
    <MI_KZ>HKBZV</MI_KZ>
    <MI_Name>Doe</MI_Name>
    <MI_Vorname>John</MI_Vorname>
    <MI_Nummer>70642860</MI_Nummer>
    <MI_DatumVon>2010-02-11T10:45:37</MI_DatumVon>
    <MI_DatumBis>2010-03-13T00:00:00</MI_DatumBis>
    <AP_Bezeichnung>5-B-03</AP_Bezeichnung>
    <KOE_Code>FHBM</KOE_Code>
    <KST_Code></KST_Code>
    <KST_Kurz><![CDATA[]]></KST_Kurz>
  </Employee>
  <Employee>
    <MI_KZ>EX2FC</MI_KZ>
    <MI_Name>Doe</MI_Name>
    <MI_Vorname>Judith</MI_Vorname>
    <MI_Nummer>70642680</MI_Nummer>
    <MI_DatumVon>2010-02-10T14:12:56</MI_DatumVon>
    <MI_DatumBis>2010-06-01T00:00:00</MI_DatumBis>
    <AP_Bezeichnung>Gotth.</AP_Bezeichnung>
    <KOE_Code>UEU</KOE_Code>
    <KST_Code></KST_Code>
    <KST_Kurz><![CDATA[]]></KST_Kurz>
  </Employee>
  <Employee>
    <MI_KZ>EX0GW</MI_KZ>
    <MI_Name>Testname</MI_Name>
    <MI_Vorname>Testprename</MI_Vorname>
    <MI_Nummer>70038630</MI_Nummer>
    <MI_DatumVon>2004-05-11T00:00:00</MI_DatumVon>
    <MI_DatumBis>2010-08-16T00:00:00</MI_DatumBis>
    <AP_Bezeichnung>SempSee</AP_Bezeichnung>
    <KOE_Code>KFMP</KOE_Code>
    <KST_Code></KST_Code>
    <KST_Kurz><![CDATA[]]></KST_Kurz>
  </Employee>
</dataroot>

HKBZV
雌鹿
约翰
70642860
2010-02-11T10:45:37
2010-03-13T00:00:00
5-B-03
FHBM
EX2FC
雌鹿
朱迪思
70642680
2010-02-10T14:12:56
2010-06-01T00:00:00
哥特。
UEU
EX0GW
测试名
Testprename
70038630
2004-05-11T00:00:00
2010-08-16T00:00:00
SempSee
KFMP

oDataSet.ReadXml需要XML采用看起来特定的格式。尝试将数据集保存到XML文件中。我相信,情况会有所不同。从XML中可以看出,缺少表名。

oDataSet.ReadXml需要XML采用看起来特定的格式。尝试将数据集保存到XML文件中。我相信,情况会有所不同。从XML中可以看出缺少表名。

数据集可以有多个您知道的表。。。试试看另一张桌子

除此之外,
ReadXml()
方法实际上是用于读取用另一个数据集的
WriteXml()方法编写的xml


要读取任意xml,应使用Visual Studio随附的示例xml文件xsd.exe程序。第一步将为xml创建一个*.xsd模式文件。然后,使用正确的选项在此xsd架构文件上再次运行该工具(抱歉,目前此计算机上没有要检查的visual studio),它将创建一个类型化数据集、C#类文件或VB.Net类文件,您可以使用该文件“反序列化”xml数据。

数据集可以有多个您知道的表。。。试试看另一张桌子

除此之外,
ReadXml()
方法实际上是用于读取用另一个数据集的
WriteXml()方法编写的xml


要读取任意xml,应使用Visual Studio随附的示例xml文件xsd.exe程序。第一步将为xml创建一个*.xsd模式文件。然后在这个xsd模式文件上使用正确的选项再次运行该工具(很抱歉,这台计算机上现在没有visual studio可供检查),它将创建一个类型化数据集、C#类文件或VB.Net类文件,您可以使用它来“反序列化”xml数据。

您的代码没有问题。读取XML时,它会将两个表导入数据集中,即dataroot表和Employee表

如果在.ReadXML之后设置断点并将鼠标悬停在变量oDataset和shoose上以打开dataset debugger可视化工具,则可以看到这一点

遍历Emplyee表:

    For Each person As DataRow In oDataSet.Tables("Employee").Rows
        MsgBox(person.Item("Mi_name"))
    Next

您的代码没有问题。读取XML时,它会将两个表导入数据集中,即dataroot表和Employee表

如果在.ReadXML之后设置断点并将鼠标悬停在变量oDataset和shoose上以打开dataset debugger可视化工具,则可以看到这一点

遍历Emplyee表:

    For Each person As DataRow In oDataSet.Tables("Employee").Rows
        MsgBox(person.Item("Mi_name"))
    Next

这取决于你所说的“重要工作”是什么意思。考虑到XML不是预期的格式,我认为它不做您希望它做的事情一点也不不不合理。但是,将原始XML转换为适当的格式应该很容易——使用XSLT或将其读入DOM,适当地转换所有内容,然后将其保存(可能保存到内存中)。我个人不会称之为“重要工作”。

这取决于你所说的“重要工作”是什么意思。考虑到XML不是预期的格式,我认为它不做您希望它做的事情一点也不不不合理。但是,将原始XML转换为适当的格式应该很容易——使用XSLT或将其读入DOM,适当地转换所有内容,然后将其保存(可能保存到内存中)。我个人不会把这称为“重要的工作”。

使用Linq到XML(.Net 3.5及以上版本),而且更容易——特别是如果您使用VB.Net,因为这具有XML文本的附加优势。

使用Linq到XML(.Net 3.5及以上版本),而且更容易——特别是如果您使用VB.Net,因为这具有XML文本的额外优势。

是的,我知道如果没有dataroot,它会起作用,但我无法更改为导入而获取的XML…是的,我知道如果没有dataroot,它会起作用,但我无法更改为导入而获取的XML…您有理由将其放入数据集吗?为什么不将其反序列化到Employee对象列表中呢?没有,只有导入数据的概述。如果将XML读入数据集中,则不需要序列化类。是否有理由将其读入数据集中?为什么不将其反序列化到Employee对象列表中呢?没有,只有导入数据的概述。如果将XML读入数据集中,则不需要序列化类。