Hallo!
Ich habe hier ein Problem. Ich bekomme eine DTD vorgegeben - diese lässt sich also nicht verändern.
Ich muss XML-Dateien, die mit dieser DTD erstellt wurden, einlesen können (unmarshal) und auch wieder ausgeben können (marshal).
Im Großen und Ganzen habe ich das schon hinbekommen. Bis auf ein paar Spezialfälle. Und dieser hier ist einer.
hier der passende Ausschnitt aus der DTD den ich nicht abgebildet bekomme:
Das Problem ist also das Vorhandensein von Text UND weiteren Elementen.
So sähe eine XML-Datei aus, die mit dieser DTD erstellt wurde:
Mein Problem ist eindeutig diese hässliche, aber AFAIK gültige, variation mit Text und Elementmischung. Wie bekomme ich sowas mit JAXB abgebildet?
Mein naiver Versuch sah so aus:
Schulg natürlich fehl:
und jetzt??
Ich habe hier ein Problem. Ich bekomme eine DTD vorgegeben - diese lässt sich also nicht verändern.
Ich muss XML-Dateien, die mit dieser DTD erstellt wurden, einlesen können (unmarshal) und auch wieder ausgeben können (marshal).
Im Großen und Ganzen habe ich das schon hinbekommen. Bis auf ein paar Spezialfälle. Und dieser hier ist einer.
hier der passende Ausschnitt aus der DTD den ich nicht abgebildet bekomme:
Code:
<!ELEMENT LO_CODE (#PCDATA | LO_NUMBER)*>
Das Problem ist also das Vorhandensein von Text UND weiteren Elementen.
So sähe eine XML-Datei aus, die mit dieser DTD erstellt wurde:
Code:
<LO_CODE>15701906<LO_NUMBER><REPAIR_GROUP>15</REPAIR_GROUP><ILLUSTRATION_NUMBER>70</ILLUSTRATION_NUMBER><TASK>19</TASK><INDEX>06</INDEX></LO_NUMBER></LO_CODE>
Mein Problem ist eindeutig diese hässliche, aber AFAIK gültige, variation mit Text und Elementmischung. Wie bekomme ich sowas mit JAXB abgebildet?
Mein naiver Versuch sah so aus:
Java:
/**
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"value",
"lonumber"
})
@XmlRootElement(name = "LO_CODE")
public class LOCODE {
@XmlValue
protected String value;
@XmlElement(name = "LO_NUMBER")
protected List<LONUMBER> lonumber;
public String getvalue() {
return value;
}
public void setvalue(String value) {
this.value = value;
}
public List<LONUMBER> getLONUMBER() {
if (lonumber == null) {
lonumber = new ArrayList<LONUMBER>();
}
return this.lonumber;
}
}
Schulg natürlich fehl:
Code:
If a class has @XmlElement property, it cannot have @XmlValue property.
und jetzt??