簡體   English   中英

有沒有辦法將ac#class序列化為xml而不在類中放置屬性?

[英]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,則可以使用XmlWriterXDocument 但是屬性是為此目的而設計的,您應該使用它們。 如果由於某種原因你不能修改你正在序列化的類(因為你沒有它的源代碼)你總是可以設計一個不同的類,你可以用屬性裝飾,然后將原始類映射到這個模型,你會序列化。

您可以使用沒有屬性的XmlSerializer ,並使用它為您提供的默認名稱,或者您也可以在類上實現IXmlSerializable接口,以獲得更加自定義但手動輸出,而無需使用屬性。

假設你有一個很好的理由不使用屬性,你可以使用XmlSerializer ,但要注意它只適用於公共成員,還需要一個公共類型和一個無參數構造函數。

暫無
暫無

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

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