我有以下类序列化:
[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类型值。有可能吗?如果是的话?
答案 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; }