我使用xjc创建了一些类。
public class MyType {
@XmlElementRefs({
@XmlElementRef(name = "MyInnerType", type = JAXBElement.class, required = false),
})
@XmlMixed
protected List<Serializable> content;
public List<Serializable> getContent() {
if (content == null) {
content = new ArrayList<Serializable>();
}
return this.content;
}
}但是我不能使用
getContent().add(newItem);因为MyInnerType是不可序列化的。为什么它不是一个对象列表?如何添加内部元素?
发布于 2012-01-31 23:26:54
请看一下here和here (一定要针对您的场景)。
来自第二个链接:
<!-- schema fragment having mixed content -->
<xs:complexType name="letterBody" mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="productName" type="xs:string"/>
<!-- etc. -->
</xs:sequence>
</xs:complexType>
<xs:element name="letterBody" type="letterBody"/>
// Schema-derived Java code:
// (Only annotations relevant to mixed content are shown below,
// others are ommitted.)
import java.math.BigInteger;
public class ObjectFactory {
// element instance factories
JAXBElement<LetterBody> createLetterBody(LetterBody value);
JAXBElement<String> createLetterBodyName(String value);
JAXBElement<BigInteger> createLetterBodyQuantity(BigInteger value);
JAXBElement<String> createLetterBodyProductName(String value);
// type instance factory
LetterBody> createLetterBody();
}
public class LetterBody {
// Mixed content can contain instances of Element classes
// Name, Quantity and ProductName. Text data is represented as
// java.util.String for text.
@XmlMixed
@XmlElementRefs({
@XmlElementRef(name="productName", type=JAXBElement.class),
@XmlElementRef(name="quantity", type=JAXBElement.class),
@XmlElementRef(name="name", type=JAXBElement.class)})
List getContent(){...}
}发布于 2012-01-31 23:00:21
你觉得你应该在里面加些什么?我使用了类似的生成,并且有像这样的字段,并且期望它是字符串内容。
显示生成此命令的xsd可能会有所帮助。
https://stackoverflow.com/questions/9081527
复制相似问题