gpt4 book ai didi

java - 如何在 List 内容 JaxB 中添加元素?

转载 作者:行者123 更新时间:2023-11-30 10:44:24 25 4
gpt4 key购买 nike

我不知道如何向 List<Serializabe> 添加元素内容,这是我使用 JaxB 从自动生成的 Java 类中获得的。

例如,我需要在该列表中添加简单的字符串,但是当我传递一个字符串时

sadrzaj.getContent().add("some string");

上面写着

java.lang.ClassCastException: jaxb.from.xsd.Clan$Sadrzaj$Stav cannot be cast to java.lang.String

这是我的代码:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"content"
})
public static class Sadrzaj {

@XmlElementRefs({
@XmlElementRef(name = "Tekst", namespace = "http://www.parlament.gov.rs/clan", type = JAXBElement.class),
@XmlElementRef(name = "Stav", namespace = "http://www.parlament.gov.rs/clan", type = JAXBElement.class)
})
@XmlMixed
protected List<Serializable> content;

public List<Serializable> getContent() {
if (content == null) {
content = new ArrayList<Serializable>();
}
return this.content;
}

我的静态类 Sadrzaj 的 XML 架构如下所示:

&lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;choice>
* &lt;element name="Stav" maxOccurs="unbounded">
* &lt;complexType>
* &lt;complexContent>
* &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* &lt;sequence>
* &lt;element name="Redni_broj" type="{http://www.w3.org/2001/XMLSchema}long"/>
* &lt;element name="Tekst" type="{http://www.w3.org/2001/XMLSchema}string"/>
* &lt;/sequence>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>
* &lt;/element>
* &lt;element name="Tekst" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded"/>
* &lt;/choice>
* &lt;/restriction>
* &lt;/complexContent>
* &lt;/complexType>

最佳答案

请查看此相关帖子:JAXB - List?和相关的 Java8 文档:Annotation Type XmlMixed

要创建可序列化的 JAXBElement,您应该使用生成的 ObjectFactory:

 LetterBody lb = ObjectFactory.createLetterBody();
JAXBElement<LetterBody> lbe = ObjectFactory.createLetterBody(lb);
List gcl = lb.getContent(); //add mixed content to general content property.
gcl.add("Dear Mr."); // add text information item as a String.

// add child element information item
gcl.add(ObjectFactory.createLetterBodyName("Robert Smith"));
gcl.add("Your order of "); // add text information item as a String

// add children element information items
gcl.add(ObjectFactory.
createLetterBodyQuantity(new BigInteger("1")));
gcl.add(ObjectFactory.createLetterBodyProductName("Baby Monitor"));
gcl.add("shipped from our warehouse"); // add text information item

关于java - 如何在 List<Serializable> 内容 JaxB 中添加元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37400728/

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