-1

我得到了以下 XML

<webservice>
  <object name="exe" type="Exercise" id="197999416">
    <prop type="Timestamp" name="created">2013-09-10T18:23:09.000</prop>
    <prop type="Timestamp" name="creationDate">2013-09-10T18:23:09.000</prop>
    <prop type="String" name="description"/>
    <ref name="exerciseProgram" type="ExerciseProgram"/>
    <object name="feed" type="Feed"/>
    <prop type="Boolean" name="hasWeight">false</prop>
    <prop type="String" name="name"/>
    <prop type="String" name="note"/>
    <object name="result" type="Result">
      <object name="activityInfo" type="ActivityInfo"/>
      <object name="altitude" type="AltitudeRange" id="10601842">
        <prop type="MetersFeets" name="avg">874.0</prop>
        <prop type="MetersFeets" name="max">889.0</prop>
        <prop type="MetersFeets" name="min">856.0</prop>
      </object>
      <object name="altitudeInfo" type="AltitudeInfo" id="11988106">
        <prop type="MetersFeets" name="ascent">50.0</prop>
        <prop type="Number" name="declineMax"/>
        <prop type="MetersFeets" name="descent">50.0</prop>
        <prop type="Number" name="inclineMax"/>
        <prop type="MetersFeets" name="vspeedDownAvg"/>
        <prop type="MetersFeets" name="vspeedDownMax"/>
        <prop type="MetersFeets" name="vspeedUpAvg"/>
        <prop type="MetersFeets" name="vspeedUpMax"/>
      </object>
      <map name="autolapAnnotations"/>
      <prop type="Number" name="autolapCount"/>
      <list name="autolaps"/>
      <list name="baseZones"/>
      <prop type="Number" name="calories">194</prop>
      <prop type="Distance" name="distance">7080.0</prop>
      <prop type="Duration" name="duration">00:36:31.200</prop>
      <set name="equipments">
        <ref type="Equipment" id="350901"/>
      </set>
      <ref name="exercise" type="Exercise" id="197999416"/>
      <prop type="Number" name="fatConsumption">28</prop>
      <object name="feedback" type="TrainingFeedback">
        <prop type="TrainingFeedbackType" name="feedback">STEADY_STATE_AND_TEMPO_TRAINING</prop>
        <list name="zones">
          <item index="0" type="HeartRateZone">
            <prop type="Number" name="expenditure"/>
            <prop type="Number" name="index">0</prop>
            <prop type="Duration" name="inzone">00:00:09</prop>
            <prop type="Number" name="lower"/>
            <prop type="Number" name="upper"/>
          </item>
          <item index="1" type="HeartRateZone">
            <prop type="Number" name="expenditure"/>
            <prop type="Number" name="index">0</prop>
            <prop type="Duration" name="inzone">00:14:30</prop>
            <prop type="Number" name="lower"/>
            <prop type="Number" name="upper"/>
          </item>
          <item index="2" type="HeartRateZone">
            <prop type="Number" name="expenditure"/>
            <prop type="Number" name="index">0</prop>
            <prop type="Duration" name="inzone">00:11:54</prop>
            <prop type="Number" name="lower"/>
            <prop type="Number" name="upper"/>
          </item>
          <item index="3" type="HeartRateZone">
            <prop type="Number" name="expenditure"/>
            <prop type="Number" name="index">0</prop>
            <prop type="Duration" name="inzone">00:09:58</prop>
            <prop type="Number" name="lower"/>
            <prop type="Number" name="upper"/>
          </item>
          <item index="4" type="HeartRateZone">
            <prop type="Number" name="expenditure"/>
            <prop type="Number" name="index">0</prop>
            <prop type="Duration" name="inzone">00:00:00</prop>
            <prop type="Number" name="lower"/>
            <prop type="Number" name="upper"/>
          </item>
        </list>
      </object>
      <prop type="Number" name="feeling"/>
      <prop type="Boolean" name="fromWristUnit">true</prop>
      <prop type="heartrate" name="hrAvg">132</prop>
      <prop type="heartrate" name="hrMax">154</prop>
      <prop type="heartrate" name="hrMin">107</prop>
      <prop type="Number" name="id">197999416</prop>
      <map name="lapAnnotations"/>
      <object name="lapCommentRecap" type="LapCommentRecap"/>
      <prop type="Number" name="lapCount"/>
      <list name="laps"/>
      <prop type="Timestamp" name="lastModified">2013-09-10T18:23:09.000</prop>
      <list name="limits"/>
      <prop type="Number" name="maxLimit"/>
      <prop type="Number" name="minLimit"/>
      <prop type="Number" name="moveCount"/>
      <list name="moves"/>
      <list name="phases"/>
      <object name="power" type="Power"/>
      <prop type="Number" name="recordingRate">1</prop>
      <prop type="Duration" name="recoveryTime">03:00:00</prop>
      <prop type="Duration" name="ridingTime">00:25:02.200</prop>
      <prop type="Number" name="runningIndex"/>
<object name="speed" type="Speed">
        <prop type="Number" name="cadenceAvg"/>
        <prop type="Number" name="cadenceMax"/>
        <prop type="Number" name="id">79248070</prop>
        <prop type="Pace" name="paceAvg">05:07</prop>
        <prop type="Pace" name="paceMax">01:29</prop>
        <prop type="SpeedKmHmph" name="speedAvg">11.7</prop>
        <prop type="SpeedKmHmph" name="speedMax">40.3</prop>
        <prop type="SpeedType" name="type">CYCLING</prop>
      </object>
      <prop type="Number" name="strideLengthAvg"/>
      <object name="summaryZone" type="FullZone"/>
      <object name="temperature" type="TemperatureRange"/>
      <prop type="Duration" name="timeAbove100BPM">00:36:31</prop>
      <prop type="Number" name="totalTimeInZone" read-only="true">2191000</prop>
      <prop type="Number" name="trainingLoad">45.4544</prop>
      <object name="userSettings" type="UserSettings">
        <prop type="Number" name="aerobicThreshold">130</prop>
        <prop type="Number" name="anaerobicThreshold">156</prop>
        <prop type="Number" name="height">153.0</prop>
        <prop type="Number" name="hrMax">180</prop>
        <prop type="Number" name="hrRest">70</prop>
        <prop type="Number" name="vo2max">30</prop>
        <prop type="Number" name="weight">61.0</prop>
      </object>
      <ref name="wristUnit" type="WristUnit" id="174"/>
      <list name="zones">
        <item index="0" type="HeartRateZone">
          <prop type="Number" name="expenditure"/>
          <prop type="Number" name="index">0</prop>
          <prop type="Duration" name="inzone">00:00:09</prop>
          <prop type="Number" name="lower">90</prop>
          <prop type="Number" name="upper">108</prop>
        </item>
        <item index="1" type="HeartRateZone">
          <prop type="Number" name="expenditure"/>
          <prop type="Number" name="index">0</prop>
          <prop type="Duration" name="inzone">00:14:30</prop>
          <prop type="Number" name="lower">108</prop>
          <prop type="Number" name="upper">126</prop>
        </item>
        <item index="2" type="HeartRateZone">
          <prop type="Number" name="expenditure"/>
          <prop type="Number" name="index">0</prop>
          <prop type="Duration" name="inzone">00:11:54</prop>
          <prop type="Number" name="lower">126</prop>
          <prop type="Number" name="upper">144</prop>
        </item>
        <item index="3" type="HeartRateZone">
          <prop type="Number" name="expenditure"/>
          <prop type="Number" name="index">0</prop>
          <prop type="Duration" name="inzone">00:09:58</prop>
          <prop type="Number" name="lower">144</prop>
          <prop type="Number" name="upper">162</prop>
        </item>
        <item index="4" type="HeartRateZone">
          <prop type="Number" name="expenditure"/>
          <prop type="Number" name="index">0</prop>
          <prop type="Duration" name="inzone">00:00:00</prop>
          <prop type="Number" name="lower">162</prop>
          <prop type="Number" name="upper">180</prop>
        </item>
      </list>
    </object>
    <prop type="String" name="shortName"/>
    <object name="sport" type="Sport" id="6163057">
      <prop type="Number" name="commonSportId"/>
      <ref name="icon" type="SportIcon" id="6163057"/>
      <prop type="String" name="name">Cycling 2</prop>
      <prop type="Boolean" name="preset">true</prop>
      <prop type="String" name="shortName">Cycling 2</prop>
      <prop type="SpeedUnit" name="speedUnit">SPEED</prop>
      <prop type="SportType" name="type">CYCLING</prop>
      <prop type="Timestamp" name="websyncId">2013-09-10T18:22:43.000</prop>
    </object>
    <prop type="Number" name="sportId">0</prop>
    <list name="sportResults"/>
    <prop type="Boolean" name="strength">false</prop>
    <object name="target" type="Target"/>
    <prop type="Timestamp" name="time">2013-09-10T12:14:40.000</prop>
    <prop type="Boolean" name="visible">true</prop>
    <prop type="Timestamp" name="websyncId">2013-09-10T12:14:40.000</prop>
  </object>
</webservice>

现在我想解组成一个java对象,最好的方法是什么?它应该返回一个对象,例如练习,其中包含已创建字段、创建日期、描述...?

JAXB 不起作用,我不想进行 XSLT 转换 :-(

关于 Meex

4

1 回答 1

0

您可以创建 XmlAdapter 以使用 JAXB 从 XML 获取对象。另一种选择是编写您的自定义解析。

请参阅XML 适配器示例

于 2013-09-30T06:45:18.137 回答