C# 从复杂xsd生成的类,尝试序列化会产生nullreferenceexception
几个小时来我一直在挠头。谷歌也在搜索。但是,我不知道如何正确地生成xml。非常感谢能帮助我解决这个问题的意见。我在前面使用过xsd.exe和不太复杂的方案,没有任何问题 所以我得到了一个错误:对象引用未设置为对象的实例 我已经从这个xsd文件创建了C#类: 我使用Microsoft xsd.exe工具创建了如下类:xsd.exe xsd file/classes 然后我删除了像[]这样的双括号,并将其替换为single[],否则我根本无法序列化/反序列化 我实际上不知道用xsd文档生成的类创建xml文件的正确方法。以下是此类xml文件的示例: 这是我正在尝试序列化的对象(只是一个示例):C# 从复杂xsd生成的类,尝试序列化会产生nullreferenceexception,c#,xml,xsd,C#,Xml,Xsd,几个小时来我一直在挠头。谷歌也在搜索。但是,我不知道如何正确地生成xml。非常感谢能帮助我解决这个问题的意见。我在前面使用过xsd.exe和不太复杂的方案,没有任何问题 所以我得到了一个错误:对象引用未设置为对象的实例 我已经从这个xsd文件创建了C#类: 我使用Microsoft xsd.exe工具创建了如下类:xsd.exe xsd file/classes 然后我删除了像[]这样的双括号,并将其替换为single[],否则我根本无法序列化/反序列化 我实际上不知道用xsd文档生成的类创建x
直线跟踪点[0]。时间=日期时间。现在;给出了所提到的错误。但我认为,与xsd/xml的外观相比,这与我创建类/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;
直线跟踪点[0]。时间=日期时间。现在;给出了所提到的错误 查看您的代码,您可以在此处初始化上述数组:
XmlObjects.Tcx20.Trackpoint_t[] trackPoint = new Trackpoint_t[1];
但是您从未在数组中初始化轨迹点本身,这会导致
trackPoint[0].Time = DateTime.Now;
失败(trackPoint[0]仍然为空)因此我得到了一张否决票。。。我该如何重新措辞?我搔了好几个小时的头,想不出一个解决办法。我也经常在谷歌上搜索。我应该补充一些信息吗?什么?我可以添加由xsd生成的整个类,以及xsd本身,但这是一个非常多的文本。。。请指导我。到底哪一行生成NullReferenceException?只是把代码扔给我们,说某个地方有问题,很可能是导致其他人投反对票的原因。Line trackPoint[0]。Time=DateTime.Now;给出了所提到的错误。但我认为,与xsd/xml的外观相比,这与我创建类/xml的错误更相关。我应该发布由xsd.exe生成的xml对象吗?也许有人可以很容易地告诉你如何构建文档?你可能会投反对票,因为这是一个调试问题,至少你避免了。可能的重复
trackPoint[0].Time = DateTime.Now;