我有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///////
}
}
答案 0 :(得分:0)
您可以使用外部绑定文件将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
将其转换为可以用于编组和放大的类。解组。