2011-06-12 160 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。