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

如何處理帶有 MixedContent 數(shù)據(jù)的 JAXB ComplexType?

How to deal with JAXB ComplexType with MixedContent data?(如何處理帶有 MixedContent 數(shù)據(jù)的 JAXB ComplexType?)
本文介紹了如何處理帶有 MixedContent 數(shù)據(jù)的 JAXB ComplexType?的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!

問(wèn)題描述

我得到了這個(gè) XML 結(jié)構(gòu):

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

注意 Description 節(jié)點(diǎn)有 MixedContent (由文本和 XML 組成) 這是 XSD 部分關(guān)于 Description 節(jié)點(diǎn):

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>

此時(shí)一切正常,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;
    }

}

然后,通過(guò)上面的 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 */

但問(wèn)題是我找不到 getset 17.5% Non-Recoverable 文本的方法來(lái)自上述 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.

這是我嘗試過(guò)的,但它不起作用:

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

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

(我認(rèn)為XJC忽略了最后一個(gè)屬性)

做了一些研究,我發(fā)現(xiàn)了這個(gè):

JAXB XJC 編譯器忽略 XML 上的混合 = true架構(gòu)文檔

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

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 屬性來(lái)表明你的類型支持混合內(nèi)容.如果沒(méi)有指定,您的 XML 內(nèi)容無(wú)效:

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 類將具有以下屬性.本質(zhì)上,這意味著所有非屬性內(nèi)容都將存儲(chǔ)在 List 中.這是必要的,因?yàn)槟枰环N機(jī)制來(lái)指示文本節(jié)點(diǎn)在元素內(nèi)容中的位置.

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(表示文本節(jié)點(diǎn))和 JAXBElement(表示元素內(nèi)容)的實(shí)例填充此列表.

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

交替

混合內(nèi)容通常會(huì)使生活變得比實(shí)際需要的更加復(fù)雜.如果可能的話,我會(huì)推薦一個(gè)替代的 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>

這篇關(guān)于如何處理帶有 MixedContent 數(shù)據(jù)的 JAXB ComplexType?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

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

相關(guān)文檔推薦

How to wrap text around components in a JTextPane?(如何在 JTextPane 中的組件周圍環(huán)繞文本?)
MyBatis, how to get the auto generated key of an insert? [MySql](MyBatis,如何獲取插入的自動(dòng)生成密鑰?[MySql])
Inserting to Oracle Nested Table in Java(在 Java 中插入 Oracle 嵌套表)
Java: How to insert CLOB into oracle database(Java:如何將 CLOB 插入 oracle 數(shù)據(jù)庫(kù))
Why does Spring-data-jdbc not save my Car object?(為什么 Spring-data-jdbc 不保存我的 Car 對(duì)象?)
Use threading to process file chunk by chunk(使用線程逐塊處理文件)
主站蜘蛛池模板: 999免费观看视频 | 一级片av| 国产精品久久久久久吹潮 | 亚洲福利在线视频 | 欧美在线色 | 九色网址| 国产精品一区二区久久 | 亚洲精品视频二区 | 日韩在线一区二区 | 日日干夜夜草 | 精品免费国产一区二区三区四区介绍 | 久久久久中文字幕 | aaaa一级毛片 | 午夜欧美一区二区三区在线播放 | 韩日一区二区三区 | 久久精品国产久精国产 | 国产精品色一区二区三区 | 国产精品视频一区二区三区 | 天天操网 | 日韩国产在线 | 国产成人免费视频网站视频社区 | av黄色免费在线观看 | 国产午夜精品理论片a大结局 | 欧美激情99 | 一区二区三区免费网站 | 日韩精品999 | 91久久久久久久久久久久久 | 在线免费观看黄色 | 国产成人精品一区二区三区四区 | 91美女在线| 91精品国产91久久久久久最新 | 99色在线视频 | 精品久久九九 | 日韩一区二区不卡 | jvid精品资源在线观看 | 国产aaaaav久久久一区二区 | 久热国产精品 | 一区二区不卡 | 国产高清在线精品一区二区三区 | 美美女高清毛片视频免费观看 | 极品粉嫩国产48尤物在线播放 |