Visual Studioツール(現在はWin 7 SDKツール)のXSD.Exeを使用して、xmlファイルから.xsdを作成しました。私の.xsdファイル:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="SceneFile" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Scene">
<xs:complexType>
<xs:sequence>
<xs:element name="VNESceneName" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="VNEPlayerName" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="VNEButtons" minOccurs="0" maxOccurs="1">
(長すぎます)次に、XSD2Code(VSのアドイン)を使用して.Designer.csファイルを作成しました。
namespace VNEngine
{
using System;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;
using System.IO;
using System.Text;
using System.Collections.Generic;
public partial class Scene
{
private string vNESceneNameField;
private string vNEPlayerNameField;
private List<SceneVNEButton> vNEButtonsField;
private SceneVNETextBox vNETextBoxField;
private SceneVNEBackground vNEBackgroundField;
private List<SceneVNESprite> vNESpritesField;
private SceneVNEMusic vNEMusicField;
private static System.Xml.Serialization.XmlSerializer serializer;
public Scene()
{
this.vNEMusicField = new SceneVNEMusic();
this.vNESpritesField = new List<SceneVNESprite>();
this.vNEBackgroundField = new SceneVNEBackground();
this.vNETextBoxField = new SceneVNETextBox();
this.vNEButtonsField = new List<SceneVNEButton>();
}
public string VNESceneName
{
get
{
return this.vNESceneNameField;
}
set
{
this.vNESceneNameField = value;
}
}
(カットされたsicneそれは長すぎます)
次に、C#コードで「シーン」(ルートxmlタグ)を作成します。
Scene testscene = new Scene();
testscene.VNEPlayerName = "hallo";
これまでのところすべてが機能していますが、次のように保存またはシリアル化(または逆シリアル化)したい場合:
testscene.SaveToFile(@"Content/Scenes/testscene.xml");
そして今、実行すると、ラインでエラーが発生します(SceneFiles.designer.cs内)
private static System.Xml.Serialization.XmlSerializer Serializer
{
get
{
if((serializer == null))
{
---> serializer = new System.Xml.Serialization.XmlSerializer(typeof(Scene));
}
return serializer;
}
}
そして、私のエラーは次のようになります。
//
Eine nicht behandelte Ausnahme des Typs "System.InvalidOperationException" ist inSystem.Xml.dllaufgetreten。
ZusätzlicheInformationen:Fehler beim Reflektieren desTyps'VNEngine.Scene'。
//
私の大まかな英語の翻訳:
処理されない例外:System.InvalidOperationExceptionがSystem.Xml.dllに表示されました追加情報:タイプ「VNEngine.Scene」の反映でエラーが発生しました
//
誰かが私が間違ったことを知っていますか?
同じことが、それほど複雑ではなく、xsd.exegeneratet.xsdスタイルシートでは機能しませんでした。