良い時間!
私はxmlを持っています:
<fieldSet name="Test" desc="Test">
<field name="id">
<fieldinfo>
<name>id</name>
<type>String</type>
<fieldsize>50</fieldsize>
</fieldinfo>
<validators />
</field>
</fieldSet>
JAXBを使用して解析する必要があります。私はこれを試しました:
try {
JAXBContext jaxbContext = JAXBContext.newInstance(CustomFieldSet.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(xml);
CustomFieldSet fieldSet = (CustomFieldSet) unmarshaller.unmarshal(reader);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
CustomFieldSetクラスは次のように始まります。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "fieldSet")
public class CustomFieldSet {
@XmlAttribute(name = "name", required = true)
private String tableName;
@XmlAttribute(name = "desc", required = true)
private String tableDescription;
...
unmarshal()関数が呼び出されると、次の例外がスローされます。
javax.xml.bind.UnmarshalException - with linked exception: [org.xml.sax.SAXParseException: Content is not allowed in prolog.]
この問題は、私のxmlにxml宣言が含まれていないという事実に関連していると思います(<?xml ...
)。
ここでの回避策を知っている人はいますか?