序列化没有引号的int类型

时间:2015-05-20 07:40:48

标签: c# .net

我有以下类序列化:

[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类型值。有可能吗?如果是的话?

4 个答案:

答案 0 :(得分:6)

这将 不再是一个格式良好的XML - 您定义了属性

[XmlAttribute]

属性值始终用引号!!

答案 1 :(得分:3)

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

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

这不是:

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

请参阅here

你为什么要偏离规则?永远不是一个好主意。

答案 2 :(得分:2)

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

另请参阅XML specification

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

因此,所有属性值都引用双引号"或单引号'

答案 3 :(得分:0)

您需要将其设为元素,因为属性始终使用引号。

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