簡體   English   中英

如何將XML映射到C#對象

[英]How do I map XML to C# objects

我有一個XML,我想加載到對象,操縱這些對象(設置值,讀取值),然后保存這些XML。 對我來說,在我創建的結構(xsd)中使用XML非常重要。

一種方法是編寫我自己的序列化程序,但它是否內置支持它或C#中的開源我可以使用?

您可以使用xsd.exe從架構(xsd)生成可序列化的C#類:

xsd.exe dependency1.xsd dependency2.xsd schema.xsd /out:outputDir

如果架構具有依賴關系(包含/導入的架構),則它們必須全部包含在同一命令行中。

此代碼(C#DotNet 1.0以后)可以很好地將大多數對象序列化為XML。 (和返回)它不適用於包含ArrayLists的對象,如果可能的話,只能使用Arrays

using System;    
using System.IO;
using System.Text;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;


public static string Serialize(object objectToSerialize)
{
    MemoryStream mem = new MemoryStream();          
    XmlSerializer ser = new XmlSerializer(objectToSerialize.GetType());         
    ser.Serialize(mem, objectToSerialize);                      
    ASCIIEncoding ascii = new ASCIIEncoding();
    return ascii.GetString(mem.ToArray());
}        

public static object Deserialize(Type typeToDeserialize, string xmlString)
{
    byte[] bytes = Encoding.UTF8.GetBytes(xmlString);
    MemoryStream mem = new MemoryStream(bytes);         
    XmlSerializer ser = new XmlSerializer(typeToDeserialize);
    return ser.Deserialize(mem);
}

如果您使用.net 3.5, LINQ to XML非常強大, LINQ to XSD也可能對您有用!

使用visual studio附帶的xsd.exe命令行程序創建可在項目/解決方案中使用的類文件,並使用System.Xml.Serialization命名空間(特別是XmlSerializer類)對這些類進行序列化/反序列化磁盤。

使用System.Xml.Serialization; 如果要將xml映射到任何隨機對象,則此命名空間具有您需要的所有屬性。 或者,您可以使用xsd.exe工具

xsd file.xsd {/ classes | / dataset} [/ element:element] [/ language:language] [/ namespace:namespace] [/ outputdir:directory] ​​[URI:uri]它將獲取你的xsd文件並從中創建c#或vb.net類。

http://msdn.microsoft.com/en-us/library/x6c1kb0s(VS.71).aspx

來自Microsoft的xsd.exe有很多錯誤:| 試試這個開源珍珠http://xsd2code.codeplex.com/

我們創建了一個可以從XML中自動生成C#類的框架。 它是一個可視項目模板,您可以將XML傳遞給它,並且這些類在項目中自動生成。 使用這些類可以創建/讀取/編寫XML。

檢查此鏈接以獲取框架和Visual C#項目模板: 單擊此處

我同意xsd確實很糟糕......但是他們制作的另一個版本幾乎沒有人知道。 它叫做xsd對象生成器。 它的下一個版本,並有更多的選擇。 它從XSD生成文件,效果很棒。 如果你有一個類似XML spy的模式生成器; 從您的xml創建一個xsd並使用此工具。 我使用這個工具創建了非常復雜的類。 然后為額外的屬性\\方法等創建部分類,然后在更新模式時,只需重新生成類,並且任何編輯都會在您的部分類中保留。

http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=7075

我敢打賭NetDataContractSerializer可以做你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM