编组双列表和类强制转换异常

时间:2015-08-17 18:30:10

标签: java list jaxb marshalling

我想在java中编写一个代码,编组的结果将是这样的:

<pointset>
//defining a point with x, y, and z values
<point>
  <XYZ> 1.0 2.5 4.6> </XYZ>
</point>
<point>
//defining a point with x, y, and z values
  <XYZ> 0.0 3.6 8.6> </XYZ>
</point>
</pointset>

XYZ元素是双精度值的列表。这可能吗?

P.S。我使用JAXB。

1 个答案:

答案 0 :(得分:0)

我发现最简单的方法是为XML文件创建XML Schema,然后从Schema生成Java类。

您的架构(myxml.xsd)将是:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="pointset" type="PointSet" />

  <xsd:complexType name="PointSet" final="extension restriction">
    <xsd:sequence>
      <xsd:element name="point" type="Point" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="Point" final="extension restriction">
    <xsd:sequence>
      <xsd:element name="XYZ" type="XYZ" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="XYZ">
    <xsd:list itemType="xsd:double" />
  </xsd:simpleType>

</xsd:schema>

使用Java附带的xjc命令生成类。

xjc myxml.xsd -p myxml