数時間頭をかいていた。グーグルも。しかし、xmlを正しく生成する方法を理解することはできません。私がこれを理解するのを助けることができる入力を高く評価します。私は以前にxsd.exeを、それほど複雑でないスキームと一緒に問題なく使用しました。
そのため、エラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません。
このxsdファイルからC#クラスを作成しました:http ://www8.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd
次のようなMicrosoftxsd.exeツールを使用してクラスを作成しました:xsd.exe xsd-file / classes
次に、[] []のような二重角かっこを削除し、単一の[]に置き換えました。そうしないと、シリアル化/逆シリアル化できません。
xsd-documentから生成されたクラスでxml-fileを作成する正しい方法を実際には知りません。このようなxmlファイルの例を次に示します。https ://github.com/mlt/schwinn810/wiki/Sample-.TCX-Files
これは私がシリアル化しようとしている私のオブジェクトです(単なる例):
XmlObjects.Tcx20.TrainingCenterDatabase_t tcx = new XmlObjects.Tcx20.TrainingCenterDatabase_t();
XmlObjects.Tcx20.AbstractSource_t abstractSource = new XmlObjects.Tcx20.Application_t();
abstractSource.Name = "TcxCreator";
tcx.Author = abstractSource;
abstractSource = new XmlObjects.Tcx20.Application_t();
XmlObjects.Tcx20.ActivityList_t activityList = new XmlObjects.Tcx20.ActivityList_t();
XmlObjects.Tcx20.Activity_t[] activity = new XmlObjects.Tcx20.Activity_t[1];
XmlObjects.Tcx20.ActivityLap_t[] lap = new ActivityLap_t[1];
XmlObjects.Tcx20.Course_t[] course = new Course_t[1];
XmlObjects.Tcx20.Trackpoint_t[] trackPoint = new Trackpoint_t[1];
XmlObjects.Tcx20.Position_t position = new Position_t();
double lat = 10;
double lon = 11;
position.LatitudeDegrees = lat;
position.LongitudeDegrees = lon;
trackPoint[0].Time = DateTime.Now;
trackPoint[0].Position = position;
lap[0].Track = trackPoint;
activity[0].Lap = lap;
activityList.Activity = activity;
tcx.Activities = activityList;
Line trackPoint [0] .Time = DateTime.Now; 上記のエラーが発生します。しかし、xsd / xmlがどのように見えるかと比較して、classes/xmlを間違って作成することに関連していると思います。
誰かがxsd.exeによって生成されたクラスからxmlを構築する方法に関して正しい方向に私を向けることができますか?
編集:YavgenyPに感謝します!それはそれでした、このコードは機能しています:
XmlObjects.Tcx20.TrainingCenterDatabase_t tcx = new XmlObjects.Tcx20.TrainingCenterDatabase_t();
XmlObjects.Tcx20.AbstractSource_t abstractSource = new XmlObjects.Tcx20.Application_t();
abstractSource.Name = "TcxCreator";
tcx.Author = abstractSource;
abstractSource = new XmlObjects.Tcx20.Application_t();
XmlObjects.Tcx20.ActivityList_t activityList = new XmlObjects.Tcx20.ActivityList_t();
XmlObjects.Tcx20.Activity_t[] activity = new XmlObjects.Tcx20.Activity_t[1];
XmlObjects.Tcx20.ActivityLap_t[] lap = new ActivityLap_t[1];
XmlObjects.Tcx20.Course_t[] course = new Course_t[1];
XmlObjects.Tcx20.Trackpoint_t[] trackPoint = new Trackpoint_t[1];
XmlObjects.Tcx20.Position_t position = new Position_t();
double lat = 10;
double lon = 11;
position.LatitudeDegrees = lat;
position.LongitudeDegrees = lon;
trackPoint[0] = new Trackpoint_t {Time = DateTime.Now, Position = position};
lap[0] = new ActivityLap_t {Track = trackPoint};
activity[0] = new Activity_t {Lap = lap};
activityList.Activity = activity;
tcx.Activities = activityList;