序列化不带引号的int类型

本文关键字:int 类型 序列化 | 更新日期: 2023-09-27 17:49:47

我有以下要序列化的类:

[Serializable]
public class LabelRectangle { 
  [XmlAttribute]
  public int X { get; set; }
  [XmlAttribute]
  public int Y { get; set; }
  [XmlAttribute]
  public int Width { get; set; }
  [XmlAttribute]
  public int Height { get; set; }
}

它将被序列化,看起来像这样

<LabelRectangle X="15" Y="70" Width="10" Height="1" />

,但我想得到以下结果:

<LabelRectangle X=15 Y=70 Width=10 Height=1 />

序列化不带引号的int类型值。这是可能的吗?如果是如何做到的?

序列化不带引号的int类型

这样就不再是格式良好的XML了——您定义了属性

[XmlAttribute]

属性值总是用引号括起来!!

你不应该那样做。属性值必须总是用引号括起来。可以使用单引号或双引号。所以这是正确的:

 <LabelRectangle X="15" Y="70" Width="10" Height="1" />

这不是:

 <LabelRectangle X=15 Y=70 Width=10 Height=1 />

你为什么要偏离规则?这可不是个好主意

XML属性不知道类型,它们的值总是用引号括起来。所以这是故意的。

参见XML规范:

AttValue  ::=  '"' ([^<&"] | Reference)* '"'
               |  "'" ([^<&'] | Reference)* "'"

所以所有的属性值要么用双引号括起来",要么用单引号括起来'

你会想让它成为一个元素,因为属性总是用引号括起来的。

[XmlElement(DataType = "int",
ElementName = "Height")]
public int Height { get; set; }