4

JAXB2 によるデフォルトの XML 出力は次のとおりです。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TEST2 xmlns="http://projects/open/2012/UniformProxySystem">
    <XXX1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
    <XXX2>17:02:26</XXX2>
    <XXX3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</TEST2>

しかし、私は以下のようにしたい:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<TEST2 xmlns="http://projects/open/2012/UniformProxySystem" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <XXX1 xsi:nil="true"/>
    <XXX2>17:01:08</XXX2>
    <XXX3 xsi:nil="true"/>
</TEST2>

誰かの助けを求めてください。JAXB 2.1 で JDK6 を使用しています。

4

5 に答える 5

1

@XmlSchemaアノテーションを使用して、次のことを試すことができます。

パッケージ情報.java

@XmlSchema(
    elementFormDefault=XmlNsForm.QUALIFIED,
    namespace="http://projects/open/2012/UniformProxySystem",
    xmlns={@XmlNs(prefix="xsi",
                  namespaceURI="http://www.w3.org/2001/XMLSchema-instance")}
)
package com.example;

import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
于 2012-04-25T16:38:17.820 に答える
1

これはうまくいきます!

@javax.xml.bind.annotation.XmlSchema(
    namespace = "http://projects/open/2012/UniformProxySystem", 
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
    ,
            xmlns={@XmlNs(prefix="xsi",
            namespaceURI="http://www.w3.org/2001/XMLSchema-instance"),
            @XmlNs(prefix="",
            namespaceURI="http://projects/open/2012/UniformProxySystem")}
)
于 2012-04-26T03:21:05.477 に答える
0

特に、プログラムにプレフィックス名前空間マッパーが既にある場合は、代替ソリューションについてここで回答を参照することもできます(XSDからJAXBクラスを生成する場合にも役立ちます)。

于 2012-04-26T00:09:47.567 に答える
0

SCHEMA_LOCATION プロパティを marsheller に追加すると機能しますが、別の attr xsi:schemaLocation="..." が生成されるため、生成された Docuemnt オブジェクトでこの attr を手動で削除します。

于 2012-04-26T01:45:41.413 に答える