【发布时间】:2015-02-15 21:39:35
【问题描述】:
我想将包含运动数据的 TCX 文件反序列化到我的一些本地/临时对象中。我使用XSD schema describing这种格式并使用xsd2code创建类。
之后,我能够将 XML 反序列化为适当的对象,并且反序列化器没有抛出任何异常。但是当我开始扩展组件的行为时,我注意到某些字段不是正确的全字段。
问题在于读取标签 Track。子结构中的反序列化Lap正确显示所有数据,但Tracks编号显示为0。
有什么方法可以触发反序列化器正确解释它吗?我错过了一些属性吗?为什么即使没有异常也无法正确读取。
我知道,很难解释并将所有需要的类放入评论 - 所以我分享我的 current status here 并写下:GetUnifiedData_WhenTrackPointsAreGivenInTcx_UnifiedTrackPointShouldRetreiveIt() 没有通过并显示我的问题。
<Activities>
<Activity Sport="Running">
<Id>2015-01-25T12:14:34Z</Id>
<Lap StartTime="2015-01-25T12:14:34Z">
<TotalTimeSeconds>507.0989990</TotalTimeSeconds>
<DistanceMeters>1000.0000000</DistanceMeters>
<MaximumSpeed>2.5790000</MaximumSpeed>
<Calories>95</Calories>
<AverageHeartRateBpm xsi:type="HeartRateInBeatsPerMinute_t">
<Value>155</Value>
</AverageHeartRateBpm>
<MaximumHeartRateBpm xsi:type="HeartRateInBeatsPerMinute_t">
<Value>173</Value>
</MaximumHeartRateBpm>
<Intensity>Resting</Intensity>
<TriggerMethod>Distance</TriggerMethod>
<Track>
<Trackpoint>
<Time>2015-01-25T12:14:34Z</Time>
<Position>
<LatitudeDegrees>50.8918607</LatitudeDegrees>
<LongitudeDegrees>16.7403161</LongitudeDegrees>
</Position>
<AltitudeMeters>233.1999969</AltitudeMeters>
<DistanceMeters>0.0000000</DistanceMeters>
<HeartRateBpm xsi:type="HeartRateInBeatsPerMinute_t">
<Value>88</Value>
</HeartRateBpm>
<Extensions>
<TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2" CadenceSensor="Footpod">
<Speed>0.0000000</Speed>
</TPX>
</Extensions>
</Trackpoint>
</Track>
<Track>
</Track>
<Extensions>
<FatCalories xmlns="http://www.garmin.com/xmlschemas/FatCalories/v1">
<Value>0</Value>
</FatCalories>
<LX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
<AvgSpeed>1.9720000</AvgSpeed>
</LX>
</Extensions>
</Lap>
</Activity>
</Activities>
【问题讨论】:
-
以后请尽量听从How to create a Minimal, Complete, and Verifiable example的建议。如果您不能在问题中包含整个代码,请至少包含最相关类的摘录。此外,尝试在最简单的控制台应用程序中重现问题。
标签: c# xml xsd deserialization