我的样本XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer" type="customer-type"/>
<xsd:complexType name="customer-type">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="billing-address" type="address-type"/>
<xsd:element name="shipping-address" type="address-type"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="address-type">
<xsd:sequence>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我的示例XML:
<?xml version="1.0" encoding="utf-8"?>
<customer>
<name>str1234</name>
<billing-address>
<street>str1234</street>
<city>str1234</city>
</billing-address>
<shipping-address>
<street>str1234</street>
<city>str1234</city>
</shipping-address>
</customer>
我使用Eclipse中的JAXB向导生成了Pojos。它导致了三个班级。 AddressType.java,CustomerType.java和ObjectFactory.java
但是没有为元素Customer生成类。
编辑: 如何在jaxb中使用un-marshaller来检索没有Customer Pojo类的值。
答案 0 :(得分:0)
您的customer元素为空,这就是未生成Customer.java的原因。 您应该向客户元素添加一些元素,如下所示:
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name = 'customerdetails' type = 'customer-type' />
<xsd:element name = 'address' type = 'address-type' />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
此外,在任何情况下,如果您打算在没有POJO的情况下从xml获取值,那么您可以使用sax或dom解析器解析它。