gpt4 book ai didi

java - JAXB 内部元素被忽略

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:39 25 4
gpt4 key购买 nike

我正在使用 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>
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;attribute name="source" type="{http://www.w3.org/2001/XMLSchema}string" />
* &lt;attribute name="version" type="{http://www.w3.org/2001/XMLSchema}string" />
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/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;
}

}

最佳答案

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>

了解更多信息

关于java - JAXB 内部元素被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com