C# 使用多个对象生成XML
我有多个对象类,正在尝试将它们转换为一个xml文档 第一类是:C# 使用多个对象生成XML,c#,xml,C#,Xml,我有多个对象类,正在尝试将它们转换为一个xml文档 第一类是: public class GameObject { // data members public int squareID; public int objectID; public String objectDescription; public String objectName; } 二是: public class GameEvent { // data members public int eventID; public
public class GameObject
{
// data members
public int squareID;
public int objectID;
public String objectDescription;
public String objectName;
}
二是:
public class GameEvent
{
// data members
public int eventID;
public String eventDescription;
public int hasEventOccured;
}
我正在寻找的xml结构是
<GAME>
<EVENTS>
<event>
</event>
<EVENTS>
<OBJECTS>
<object>
</object>
<OBJECTS>
它可以在单个表达式中完成,在其名称后使用
XElement
构造函数的参数创建子元素,并扩展集合,因此LINQ表达式将为每个节点创建一个子元素(XElement
创建子元素,XAttribute
添加属性)
您可以这样定义另一个类:
[DataContract(Name ="GAME")]
public class Game
{
[DataMember(Name = "OBJECTS")]
List<GameObject> Objects { get; set; }
[DataMember(Name = "EVENTS")]
List<GameEvent> Events { get; set; }
}
如果
DataContract
属性不可用,请不要忘记添加对System.Runtime.Serialization
的引用,创建类的结构,如下所示:
创建类的结构,如下所示,并通过将值赋给类的属性来序列化类的对象:
[XmlRoot("GAME")]
public class Game
{
[XmlElement("EVENTS")]
public Events Events { get; set; }
[XmlElement("OBJECTS")]
public GameObject GameObject { get; set; }
}
public class Events
{
[XmlElement("EVENTS")]
public GameEvent Event;
}
public class Object
{
[XmlElement("object")]
public GameObject GameObject;
}
public class GameEvent
{
[XmlElement("eventID")]
public int eventID;
[XmlElement("eventDescription")]
public String eventDescription;
[XmlElement("hasEventOccured")]
public int hasEventOccured;
}
public class GameObject
{
[XmlElement("squareID")]
public int squareID;
[XmlElement("objectID")]
public int objectID;
[XmlElement("objectDescription")]
public String objectDescription;
[XmlElement("objectName")]
public String objectName;
}
您能显示您想要的xml文件结构吗?为什么不创建一个包装类并将其序列化为xml?1使用了rock 0 1一个带有数字pad safe 115@jsomers89的大型保险柜请更新问题:XML在注释中的可读性甚至不如代码块。
public static void Serialize<T>(string path, T value)
{
System.Xml.Serialization.XmlSerializer serializer =
new System.Xml.Serialization.XmlSerializer(typeof(T));
System.Xml.XmlTextWriter writer =
new System.Xml.XmlTextWriter(path, System.Text.Encoding.UTF8);
serializer.Serialize(writer, value);
writer.Close();
}
[XmlRoot("GAME")]
public class Game
{
[XmlElement("EVENTS")]
public Events Events { get; set; }
[XmlElement("OBJECTS")]
public GameObject GameObject { get; set; }
}
public class Events
{
[XmlElement("EVENTS")]
public GameEvent Event;
}
public class Object
{
[XmlElement("object")]
public GameObject GameObject;
}
public class GameEvent
{
[XmlElement("eventID")]
public int eventID;
[XmlElement("eventDescription")]
public String eventDescription;
[XmlElement("hasEventOccured")]
public int hasEventOccured;
}
public class GameObject
{
[XmlElement("squareID")]
public int squareID;
[XmlElement("objectID")]
public int objectID;
[XmlElement("objectDescription")]
public String objectDescription;
[XmlElement("objectName")]
public String objectName;
}