我正在嘗試使用Windows窗體創建一個路點生成器,它允許用戶通過GUI創建路點數據& &將數據輸出到XML文件。我選擇利用內置的c#XML序列化功能,但無法以客戶端所需的方式格式化XML輸出。使用c#&windows窗體進行XML序列化
一個精簡的航點數據對象的版本看起來像下面這樣:
// Waypoint data class
[XmlRoot("RootNode")]
public class WaypointProjectData
{
[XmlElement("Map")] // Also tried to use XmlElementAttribute,
[XmlAttribute("file")] // XmlAttributeAttribute, and many variations
// of these qualifiers, with no success
public string m_szMapImageFileName;
[XmlAttribute("width")]
public int m_iWidth;
[XmlAttribute("height")]
public int m_iHeight;
[XmlArray("Nodes")]
public ArrayList m_aoNodes;
WaypointProjectData()
{
m_szMapImageFileName = "map.png";
m_aoNodes = new ArrayList();
}
}
客戶要求XML輸出與以下佈局/格式符合:
<RootNode>
<Map file="map.png" width="100" height="100" />
<OtherData var="variable" data="10" />
<Nodes>
<Node x="10" y="30" />
<Node x="30" y="20" /> // etc...
</Nodes>
</RootNode>
一些明確有關如何使用c#xml序列化來做到這一點的例子會很有幫助。謝謝!
什麼部分不起作用? – BrokenGlass
您可以使用XmlElement或XmlAttribute節點,但不能同時使用給定的屬性。也許爲每個XmlNode創建一個您需要的對象,映射到該元素的屬性,然後自己合併XML結果? –
註釋掉[XmlElement(「Map」)]時,文件字符串,寬度和高度數據全部添加爲根節點的屬性。或者,當註釋掉[XmlAttribute(「file」)]時,文件字符串被放置在根節點之後的元素標記內,但寬度和高度仍然被放置爲根節點的屬性。 – GameDev