我正在使用JAXB处理一些XML。我不明白为什么我无法访问此标记的内部元素。
XML片段:
<binary>
<route>
<payload source="SomeService" version="1.2"><![CDATA[ACAA8f///...snip...AAAAAGGAAAARAFR]]>
</payload>
</route>
</binary>
由此我生成了一个XSD:
<xsd:element name="binary">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="route">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="payload">
<xsd:complexType>
<xsd:attribute name="source" type="xsd:string" />
<xsd:attribute name="version" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
我正在使用maven-jaxb2-plugin并且一切正常:
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在我的对象上,我有getSource()和getVersion()的方法,但没有getValue()或类似的东西。我从根本上错过了一些东西吗?试图以这种方式访问内部元素数据不正确吗?
编辑:包含生成的Java代码
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <attribute name="source" type="{http://www.w3.org/2001/XMLSchema}string" />
* <attribute name="version" type="{http://www.w3.org/2001/XMLSchema}string" />
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
public static class Payload {
@XmlAttribute(name = "source")
protected String source;
@XmlAttribute(name = "version")
protected String version;
@XmlValue
protected String value;
/**
* Gets the value of the source property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getSource() {
return source;
}
/**
* Sets the value of the source property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setSource(String value) {
this.source = value;
}
/**
* Gets the value of the version property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getVersion() {
return version;
}
/**
* Sets the value of the version property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setVersion(String value) {
this.version = value;
}
}
答案 0 :(得分:1)
payload
元素的模式定义应如下所示,以获取您正在寻找的JAXB类。您需要修复从XML文档生成XML模式的方法。
<element name="payload">
<complexType>
<simpleContent>
<extension base="string">
<xsd:attribute name="source" type="xsd:string" />
<xsd:attribute name="version" type="xsd:string" />
</extension>
</simpleContent>
</complexType>
</element>
了解更多信息