序列化不带引号的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类型值。这是可能的吗?如果是如何做到的?
这样就不再是格式良好的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; }