我如何在JAXB中存储对象?

时间:2014-08-06 00:08:16

标签: java jaxb

我有pointbrush类,此类包含对象属性colorPoint此属性类型为Color。我使用JAXB生成我的所有类但我的问题如何才能存储XML中的颜色属性没有生成类颜色,因为JAVA有这个类,我使用了这个类,所以我不希望生成其他时间。

在我的架构中:

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.example.org/ProjectDataBase"
<complexType name="PointBrush">
            <element name="ColorPoint" type="string" maxOccurs="1"
                minOccurs="1">
            </element>
            <element name="ColorPoint" type="tns:ColorPoint" maxOccurs="1"
                minOccurs="1">
            </element>
</complexType>
<complexType name="ColorPoint">
        <sequence>
            <element name="r" type="float" maxOccurs="1" minOccurs="1"></element>
            <element name="g" type="float" maxOccurs="1" minOccurs="1"></element>
            <element name="b" type="float" maxOccurs="1" minOccurs="1"></element>
            <element name="t" type="float" maxOccurs="1" minOccurs="1"></element>
        </sequence>
    </complexType>
</schema>

Java代码:

public class PointBrush   {
    @XmlElement(name = "ColorPoint")
    protected Color colorPoint;

    public Color getColorPoint() {
        return colorPoint;
    }
    public void setColorPoint(Color value) {
        this.colorPoint = value;
    }
}
public class BrushPointMr{
         public boolean Insert(PointBrush entity) {
            jaxbContext = JAXBContext.newInstance(Project.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            Project project = (Project) jaxbUnmarshaller.unmarshal(file);
            PointBrush newBrush = objectFactory.createPointBrush();
            newBrush.setColorPoint(entity.getColorPoint());
            ////what can I do in java code for store object Color///////
         }
}

1 个答案:

答案 0 :(得分:0)

从XML架构开始

您可以使用外部绑定文件将XJC配置为执行您想要的操作。在下面的示例中,现有的类com.example.Foo将用于名为Foo的复杂类型。

<强> binding.xml

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">

    <jxb:bindings schemaLocation="yourSchema.xsd">
        <jxb:bindings node="//xs:complexType[@name='ColorPoint']>
            <jxb:class ref="java.awt.Color"/>
        </jxb:bindings>
     </jxb:bindings>
 </jxb:bindings>

XJC致电

xjc -d outputDir -b binding.xml yourSchema.xsd

注意

您将手动需要为XmlAdapter类添加包级别Color以正确执行XML转换。

处理有问题的班级

当你有一个JAXB默认无法转换的类时,可以使用XmlAdapter将其转换为可以用于编组和放大的类。解组。