我正在尝试使用方法Jaxb.unmarshall(String,Class)
解组以下xml文件。我总是得到错误:
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>
答案 0 :(得分:1)
以下是xml示例中的working Java unmarshalling example。
你有一个名为spieltag的根元素和一个也称为spieltag的内部元素。如果您在XMLSchema中没有很好地定义它,那么这可能会导致问题。在示例中,我使用spieltag2
作为内部spieltag
元素。
另外,不要忘记使用正确的@XmlSchema
编译package-info.java:
如上所述here,您可以在@XmlSchema
类上使用package-info
注释来控制命名空间限定。如果你已经编写了一个package-info类,请确保它正在被编译(某些版本的ant在package-info类中有问题)。
<强>包信息强>
@XmlSchema(
namespace = "http://arnezelasko.de/spieltag",
elementFormDefault = XmlNsForm.QUALIFIED)
package de.arnezelasko.spieltag;
了解更多信息