簡體   English   中英

使用XmlSerializer時自動縮小屬性/元素名稱

[英]Automatically minifying attribute/element names when using XmlSerializer

使用XmlSerializer序列化C#類時,表示類屬性的屬性/元素將與源代碼中的名稱/名稱相同。

我知道您可以這樣做,以覆蓋此問題:

[XmlAttribute("num")]
public int NumberOfThingsThatAbcXyz { get; set; }

我希望為我的類生成的XML盡可能緊湊,但顯然仍然能夠在另一側自動反序列化。

有沒有一種方法可以盡可能地縮小這些名稱,而不必用短字符串手動思考和注釋所有內容? 生成的XML易於人類閱讀不是問題。

嗯,請提防此類微優化。 要用現代計算硬件來回報他們是很難的。 處理XML所涉及的I / O的真正成本不是數據量,而是它的位置。 字節便宜,傳輸字節已經高度優化。 它是磁盤驅動器讀頭在服務器上(可能是您自己的計算機上)磨掉的,它決定了程序的運行速度。 一旦到達正確的位置,讀取一個字節與讀取一個千字節幾乎一樣昂貴。 內存的工作方式相同。

最終提示:如果這是一個常見的優化,那么他們會提出比IXmlSerializable更好的東西。

為了在使用屬性的基礎上自定義XML序列化,您將需要您的類來實現IXmlSerializable接口。

如果可讀性是不是一個問題?為什么使用XML 的話 -或許像“協議緩沖區”(有可用的C#實現)會給你的互操作性的理想水平,而不該問題,包括獲取的一些方法全部自動設置屬性(如果您有興趣的話,我可以討論更多)。

另一種選擇是簡單地gzip壓縮數據。 由於所有重復的節點名稱,xml zip壓縮得非常好。

屬性的性質意味着無法做到這一點。 有關為什么原因,請參見可以在c#中動態添加屬性 即使可以做到,我也同意漢斯的說法,這可能不值得。 如果您真的對此感到擔心,那么您應該選擇Marc的建議之一。

暫無
暫無

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

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