2011-06-12 164 views
0

我有一个XML文件,我想从中检索数据,所以我可以将这些数据存储在我的数据库中。我搜索了,我发现这个post如何从XML文件检索数据?

我不知道下面的方法:

创建一个XML模式,所以你可以反序列化这个XML转换为.NET对象 - 效果最好,如果你有一大堆这些文件的导入。

所以:

  • 我想看到一些文章或如何做到这一点的例子。
  • 如何检查来自XML文件的数据?

回答

2

这意味着您可以编写一个反映XML文件结构的.NET对象,然后将XML文件反序列化回此对象的实例。例如,如果您有以下XML:

<User> 
    <FirstName>John</FirstName> 
    <LastName>John</LastName> 
</User> 

你可以有一个User类:

public class User 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

,然后反序列化:

var serializer = new XmlSerializer(typeof(User)); 
using (var reader = XmlReader.Create("test.xml")) 
{ 
    User user = (User)serializer.Deserialize(reader); 
} 

您可以apply attributes到.NET对象为了控制序列化/反序列化过程。

就XML文件的验证而言,您可以编写代表文件数据结构的XSD架构(这是一个XML文件),然后写入validate it against this schema。这将确保您作为输入的XML文件服从定义的规则(它具有正确的节点名称,所需的属性...)。

+0

这是非常感谢很多,请多一个问题,哪种方法是最好的?这种方法或'LINQ to XML'.如果我想做出相反的动作,我的意思是将数据从数据库转换为XML文件。这种方式很方便。 – 2011-06-12 12:12:29

+1

@just_name,这取决于很多因素。没有最好的方法。两者都是有效的,取决于你想要做什么。例如,如果你有非常大的数据不能放入内存,你应该使用一些Stream API来读/写,比如XmlReader/XmlWriter,而不是序列化/反序列化对象。 – 2011-06-12 12:16:19

+0

非常感谢.... – 2011-06-12 12:18:56

1

您想知道“创建XML模式,以便您可以将此XML反序列化为.NET对象 - 如果您有大量要导入的文件,则效果最佳。

这里是您展示如何实现这一目标的链接:

Instructions

1

您可以使用Visual Studio创建模式。只需用VS打开XML文件。然后选择XML-> Create schema菜单。

或者你可以使用Xsd.exe tool

  • 使用第一次提取玛命令 XSD.EXE your.xml
  • 其次使用 命令XSD.EXE your.xsd生成生成的模式 类/类

and here you ca n找到如何使用xsd验证xml。