![](/img/trans.png)
[英]How do I map array of structs from XML to Array (IList/IEnumerable) of objects using XML-RPC by CookComputing in .NET 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.