1

次のxmlファイルをメソッドでアンマーシャリングしようとしていますJaxb.unmarshall(String,Class)。私はいつもエラーが発生します:

Exception in thread "main" java.lang.IllegalArgumentException: URI is not absolute:

XMLファイル:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<spieltag xmlns="http://arnezelasko.de/spieltag">
<game>
    <spieltag>28</spieltag>
    <nummer>1</nummer>
    <beginn>2010-03-26 20:30:00</beginn>
    <mannschaft_heim><![CDATA[VfL Bochum]]></mannschaft_heim>
    <mannschaft_gast><![CDATA[Eintracht Frankfurt]]></mannschaft_gast>
    <tore_heim_halbzeit>1</tore_heim_halbzeit>
    <tore_gast_halbzeit>1</tore_gast_halbzeit>
    <tore_heim_ergebnis>1</tore_heim_ergebnis>
    <tore_gast_ergebnis>2</tore_gast_ergebnis>
</game>
<game>
    <spieltag>28</spieltag>
    <nummer>2</nummer>
    <beginn>2010-03-27 15:30:00</beginn>
    <mannschaft_heim><![CDATA[Bayern München]]></mannschaft_heim>
    <mannschaft_gast><![CDATA[VfB Stuttgart]]></mannschaft_gast>
    <tore_heim_halbzeit></tore_heim_halbzeit>
    <tore_gast_halbzeit></tore_gast_halbzeit>
    <tore_heim_ergebnis></tore_heim_ergebnis>
    <tore_gast_ergebnis></tore_gast_ergebnis>
</game>

4

1 に答える 1

1

これは、xmlの例からの実用的なJavaアンマーシャリングの例です。

spieltagと呼ばれるルート要素とspieltagとも呼ばれる内部要素があります。XMLSchemaでこれを適切に定義していない場合、問題が発生する可能性があります。この例ではspieltag2、内部spieltag要素に使用しました。

@XmlSchemaまた、適切な:でpackage-info.javaをコンパイルすることを忘れないでください。

ここで述べたよう@XmlSchemaに、クラスのアノテーションを使用しpackage-infoて名前空間の修飾を制御できます。すでにpackage-infoクラスを作成している場合は、それがコンパイルされていることを確認してください(antの一部のバージョンではpackage-infoクラスに問題がありました)。

package-info

@XmlSchema( 
    namespace = "http://arnezelasko.de/spieltag", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package de.arnezelasko.spieltag;

詳細については

于 2012-09-06T14:49:28.467 に答える