久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

如何處理帶有 MixedContent 數據的 JAXB ComplexType?

How to deal with JAXB ComplexType with MixedContent data?(如何處理帶有 MixedContent 數據的 JAXB ComplexType?)
本文介紹了如何處理帶有 MixedContent 數據的 JAXB ComplexType?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我得到了這個 XML 結構:

<Tax>
  <Money currency="USD">0.00</Money>
  <Description xml:lang="en">
     17.5% Non-Recoverable
    <ShortName>vatspecial</ShortName>
  </Description>
</Tax>

注意 Description 節點有 MixedContent (由文本和 XML 組成) 這是 XSD 部分關于 Description 節點:

Notice that Description node has MixedContent (composed with text and XML) and this is the XSD part regarding Description node:

<xsd:complexType name="TaxDescriptionType">
  <xsd:sequence>
    <xsd:element name="ShortName" type="xsd:string" />
  </xsd:sequence>
  <xsd:attribute ref="xml:lang" />
</xsd:complexType>

此時一切正常,XJC 輸出與 TaxDescriptionType 類似的生成類:

Everything is ok at this point, XJC outputs the generated classes like this one regarding TaxDescriptionType:

package org.com.project;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

/**
 * <p>Java class for TaxDescriptionType complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="TaxDescriptionType">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="ShortName" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *       &lt;/sequence>
 *       &lt;attribute ref="{http://www.w3.org/XML/1998/namespace}lang"/>
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "TaxDescriptionType", propOrder = {
    "shortName"
})
public class TaxDescriptionType {

    @XmlElement(name = "ShortName", required = true)
    protected String shortName;
    @XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace")
    @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
    @XmlSchemaType(name = "NCName")
    protected String lang;

    /**
     * Gets the value of the shortName property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getShortName() {
        return shortName;
    }

    /**
     * Sets the value of the shortName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setShortName(String value) {
        this.shortName = value;
    }

    /**
     * Gets the value of the lang property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getLang() {
        return lang;
    }

    /**
     * Sets the value of the lang property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setLang(String value) {
        this.lang = value;
    }

}

然后,通過上面的 class 我可以使用以下元素:

Then, with the above class I am able to work around with the elements like this:

taxDescriptionType.setLang("en");
taxDescriptionType.setShortName("vatspecial");
/* missing value: 17.5% Non-Recoverable */

但問題是我找不到 getset 17.5% Non-Recoverable 文本的方法來自上述 XML 示例的 MixedContent-ComplexType.

But the problem is that I can't found a way to get or set the 17.5% Non-Recoverable text of the MixedContent-ComplexType from the above XML example.

這是我嘗試過的,但它不起作用:

  • 像這樣使用 mixed="true" 屬性:

<xsd:complexType name="TaxDescriptionType" mixed="true">

(我認為XJC忽略了最后一個屬性)

做了一些研究,我發現了這個:

JAXB XJC 編譯器忽略 XML 上的混合 = true架構文檔

但我不確定這是否是解決此問題的方法.其中一個答案說這是一個錯誤,而另一個答案顯示了將 MixedContent 轉換為 List 的代碼,也許下一個情況將是如何處理:

But I am not sure if this is the way to solve this. One of the answers said that this is a bug and in the other one shows a code that transforms the MixedContent into a List<Serializable> and maybe the next situation will be about how to deal with this:

taxDescriptionType.getContent().add(Serializable element);

(而且我真的不知道如何處理 Serializable 元素)

推薦答案

正如你提到的,你需要添加 mixed 屬性來表明你的類型支持混合內容.如果沒有指定,您的 XML 內容無效:

As you mentioned you need to add the mixed attribute to indicate that your type supports mixed content. Without this specified your XML content is invalid:

<xsd:complexType name="TaxDescriptionType" mixed="true">
    <xsd:sequence>
        <xsd:element name="ShortName" type="xsd:string" />
    </xsd:sequence>
    <xsd:attribute ref="xml:lang" />
</xsd:complexType>

生成的 TaxDescriptionType 類將具有以下屬性.本質上,這意味著所有非屬性內容都將存儲在 List 中.這是必要的,因為您需要一種機制來指示文本節點在元素內容中的位置.

The generated TaxDescriptionType class will have the following property. Essentially this means that all of the non-attribute content will be stored in a List. This is necessary because you need a mechanism that indicates where the text nodes are wrt the element content.

@XmlElementRef(name = "ShortName", namespace = "http://www.example.org/schema", type = JAXBElement.class)
@XmlMixed
protected List<Serializable> content;

您將使用 String(表示文本節點)和 JAXBElement(表示元素內容)的實例填充此列表.

You will populate this list with instances of String (representing text nodes) and JAXBElement (representing element content).

交替

混合內容通常會使生活變得比實際需要的更加復雜.如果可能的話,我會推薦一個替代的 XML 表示.

Mixed content generally makes life more complicated than it needs to be. If possible I would recommend an alternate XML representation.

<Tax>
  <Money currency="USD">0.00</Money>
  <Description xml:lang="en" ShortName="vatspecial">
    17.5% Non-Recoverable
  </Description>
</Tax>

或者

<Tax>
  <Money currency="USD">0.00</Money>
  <Description xml:lang="en">
    <LongName>17.5% Non-Recoverable</LongName>
    <ShortName>vatspecial</ShortName>
  </Description>
</Tax>

這篇關于如何處理帶有 MixedContent 數據的 JAXB ComplexType?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to wrap text around components in a JTextPane?(如何在 JTextPane 中的組件周圍環繞文本?)
MyBatis, how to get the auto generated key of an insert? [MySql](MyBatis,如何獲取插入的自動生成密鑰?[MySql])
Inserting to Oracle Nested Table in Java(在 Java 中插入 Oracle 嵌套表)
Java: How to insert CLOB into oracle database(Java:如何將 CLOB 插入 oracle 數據庫)
Why does Spring-data-jdbc not save my Car object?(為什么 Spring-data-jdbc 不保存我的 Car 對象?)
Use threading to process file chunk by chunk(使用線程逐塊處理文件)
主站蜘蛛池模板: 99精品视频免费观看 | 亚洲精品一区二区三区蜜桃久 | 久热伊人| 久久国产传媒 | 91在线电影| 国产精品久久久久久久 | 国产精品视频一 | 日韩欧美手机在线 | 欧美福利三区 | 日韩欧美国产一区二区三区 | 亚洲国产精品久久久久婷婷老年 | 在线观看中文字幕 | 国产成人91视频 | 久久美国| 91操操操 | 天天综合网永久 | 国产1区在线| 国产乱码久久久久久一区二区 | 91久久久久久久久久久久久 | 污免费网站 | 毛片久久久 | 精品福利一区 | 久久久国产一区 | 久久亚洲一区二区三区四区 | 久久免费香蕉视频 | 色噜噜狠狠色综合中国 | av手机免费在线观看 | 国产精品色婷婷久久58 | 97免费在线观看视频 | 天堂色网| 福利片在线 | 97国产精品视频 | 日日操日日干 | 精品久久99| 九九热精品在线 | 日本一区二区在线视频 | 日批免费在线观看 | 欧美黄色大片在线观看 | 欧美一级做性受免费大片免费 | 日韩中文在线视频 | 欧美精品一区二区三区在线播放 |