![](/img/trans.png)
[英]Serialize a C# class to XML with attributes and a single value for the class
[英]Is there a way to serialize a c# class to xml without put attributes on the class?
我想序列化ac#類,但我不想把屬性放在類上。 我在codeplex上找到了FluentXML,但它似乎只是一個想法項目而且無論如何都無法正常工作
這是一個適合我的例子。 從Serialize對象到字符串
我只是用谷歌搜索“序列化類到xml字符串”
String XmlizedString = null;
XmlSerializer x = new XmlSerializer(objectNameHere.GetType());
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
x.Serialize(xmlTextWriter, objectNameHere);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
UTF8Encoding encoding = new UTF8Encoding();
XmlizedString = encoding.GetString(memoryStream.ToArray());
XmlizedString = XmlizedString.Substring(1);
它生成了一個像這樣的字符串<?xml version="1.0" encoding="utf-8"?><Employee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Name>StackOverflow User</Name><Title>User of StackOverflow.</Title><Salary>70000</Salary><Skills><string>Being Awesome</string><string>Being sweet</string></Skills></Employee>
從Employee類開始,就像這樣簡單:
public class Employee
{
public string Name { get; set; }
public string Title { get; set; }
public double Salary { get; set; }
public Collection<string> Skills { get; set; }
}
沒有什么可以強迫你在你的類上放置屬性來使用XmlSerializer
。 在這種情況下,生成的XML將簡單地反映您的對象結構。 另一方面,如果您想控制生成的XML,則可以使用XmlWriter
或XDocument
。 但是屬性是為此目的而設計的,您應該使用它們。 如果由於某種原因你不能修改你正在序列化的類(因為你沒有它的源代碼)你總是可以設計一個不同的類,你可以用屬性裝飾,然后將原始類映射到這個模型,你會序列化。
您可以使用沒有屬性的XmlSerializer
,並使用它為您提供的默認名稱,或者您也可以在類上實現IXmlSerializable
接口,以獲得更加自定義但手動輸出,而無需使用屬性。
假設你有一個很好的理由不使用屬性,你可以使用XmlSerializer
,但要注意它只適用於公共成員,還需要一個公共類型和一個無參數構造函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.