ウェイポイントを使用してウェイポイントを生成しようとしています。ユーザーがウェイポイント&のパスデータをGUI経由で作成することができます。& XMLファイルに出力します。私は組み込みのc#XMLシリアル化機能を利用することを選択しましたが、クライアントが要求する方法でXML出力をフォーマットすることができませんでした。XMLシリアル化とC#&windowsフォーム
Aには、次のようになり、ウェイポイントデータオブジェクトのバージョンを剥奪:
// 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ごとに1つのオブジェクトを作成し、その要素の属性にマップし、XML結果を自分でマージしますか? –
[XmlElement( "Map")]をコメントアウトすると、ファイル文字列、widthおよびheightのデータはすべてルートノードの属性として追加されます。また、[XmlAttribute( "file")]をコメントアウトする場合、ファイル文字列はルートノードの後の要素タグ内に配置されますが、幅と高さはルートノードの属性として配置されます。 – GameDev