1

私はJavaクラスを生成した多くのネストされたタグを持つ非常に大きなxmlを持っています。

番号で始まるタグの 1 つ<3DSecure></3DSecure>

このタグのみを手動で設定する必要がありました.JavaにマップしましたthreeDSecure.

これが XML 規約に違反していることはわかっていますが、このチェックを無効にすることはできますか? そうしないと、この XML を予期する API を制御できないため、JAXB を削除して xml を手動でセットアップする必要があります。

アンマーシャリング/マーシャリングすると、次のエラーが表示されます。

[org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.]
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:505)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:206)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:173)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169)
4

2 に答える 2

1

-nvXML スキーマからクラスを生成するときに、XML スキーマの検証を無効にするフラグを使用できます。

XJCコール

xjc -nv schema.xsd 

XML スキーマ (schema.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/schema"
    xmlns:tns="http://www.example.org/schema" 
    elementFormDefault="qualified">

    <complexType name="foo">
       <sequence>
           <element name="3DSecure" type="string"/>
       </sequence>
    </complexType>

</schema>

生成されたクラス (Foo)

package org.example.schema;

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "foo", propOrder = {"_3DSecure"})
public class Foo {

    @XmlElement(name = "3DSecure", required = true)
    protected String _3DSecure;

    public String get3DSecure() {
        return _3DSecure;
    }

    public void set3DSecure(String value) {
        this._3DSecure = value;
    }

}
于 2013-08-06T00:34:35.723 に答える
0

@XmlElementアノテーションのname属性を次のように使用して、Java クラス プロパティをバインドします。

 @XmlRootElement
 public class JAXBModel {

     @XmlElement(name="3DSecure")
     public String threeDSecure;

     // ...
 }
于 2013-08-05T11:56:30.187 に答える