我在C#中有以下结构:
[Serializable]
public struct Line
{
public Line(Point startPoint, Point endPoint)
{
StartPoint = startPoint;
EndPoint = endPoint;
}
public Point StartPoint;
public Point EndPoint;
}
我在另一个类中使用,即XmlSerializable
[XmlRootAttribute("Drawing")]
public Drawing
{
[XmlElement("Line")]
List<Line> lines;
//other members...
}
通过序列化Drawing类,我得到一个描述如下行的xml:
<Line>
<StartPoint>
<X>13</X>
<Y>33</Y>
</StartPoint>
<EndPoint>
<X>43</X>
<Y>63</Y>
</EndPoint>
</Line>
是否有任何方法可以指定xml序列化标记,以便以这种格式生成Line:
<Line StartPointX="13" StartPointY="33" EndPointX="43" EndPointY="63"/>
答案 0 :(得分:2)
将[XmlAttribute]
放在X和Y属性之上(在您的示例中未显示)。这应该使它们作为属性而不是元素序列化,并将生成以下XML:
<Line>
<StartPoint X="13" Y="33" />
<EndPoint X="43" Y="63" />
</Line>
如果您完全按照指定提交示例输出,则还必须重新构造对象,以便正确命名X和Y属性,如下所示:
[Serializable]
public struct Line
{
[XmlAttribute]
public int StartPointX
[XmlAttribute]
public int StartPointY
[XmlAttribute]
public int EndPointX
[XmlAttribute]
public int EndPointY
}
(为了简洁省略了Getters和Setters)