JAXB Unmarshal mit deklariertem Typ füllt das resultierende Objekt nicht mit Daten

Ich versuche, eine bestimmte XML zu dekomprimieren:

<FHcomment>
 <TX>rewriting of file</TX>
 <tool_id>toolA</tool_id>
 <tool_vendor>Company</tool_vendor>
 <tool_version>1.7.36.0</tool_version>
</FHcomment>

Das Schema wurde bereits in JAXB-Klassen kompiliert, siehe hier:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
 "tx",
 "toolId",
 "toolVendor",
 "toolVersion",
 "userName",
 "commonProperties",
 "extensions"
})
@XmlRootElement(name = "FHcomment")
public class FHcomment {

@XmlElement(name = "TX", required = true)
protected TX tx;
@XmlElement(name = "tool_id", required = true)
protected BaseName toolId;
@XmlElement(name = "tool_vendor", required = true)
protected BaseName toolVendor;
@XmlElement(name = "tool_version", required = true)
protected BaseVersion toolVersion;
@XmlElement(name = "user_name")
protected BaseName userName;
@XmlElement(name = "common_properties")
protected CommonPropertiesType commonProperties;
protected ExtensionsType extensions;
@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap<QName, String>();

.....
/*
 * GETTERS and SETTERS for the fields have been removed here
 */
.....
}

Mein Code zum Dekomprimieren der XML lautet wie folgt:

JAXBContext jc = JAXBContext.newInstance(FHcomment.class);
String s = "<FHcomment>....</Fhcomment>";
Unmarshaller unmarshaller = jc.createUnmarshaller();
XMLInputFactory fac = XMLInputFactory.newFactory();
XMLStreamReader xsr = fac.createXMLStreamReader(new StringReader(s));
JAXBElement<FHcomment> foo = unmarshaller.unmarshal(xsr, FHcomment.class);
FHcomment val = foo.getValue();

Problem: Das resultierende FHcomment-Objekt enthält keine untergeordneten Elemente von FHcomment. Alle sind null, was nicht das gewünschte Ergebnis ist.

Wie kann ich JAXB anweisen, das angegebene XML vollständig in ein Objekt zu dekomprimieren?

BEARBEITEN: Nachdem ich dem Unmsarshaller einen ValidationHandler hinzugefügt habe, bin ich dem Problem näher gekommen:

unerwartetes Element (uri: "", local: "TX"). Erwartete Elemente sind <{htp: //www.example.com/mdf/v4} tool_id>, <{htp: //www.example.com/mdf/v4} TX>, <{htp: //www.www .example.com / mdf / v4} common_properties>, <{htp: //www.example.com/mdf/v4} tool_version>, <{htp: //www.example.com/mdf/v4} extensions>, <{htp: //www.example.com/mdf/v4} tool_vendor>, <{htp: //www.example.com/mdf/v4} user_name>

unerwartetes Element (uri: "", local: "tool_id"). Erwartete Elemente sind ....

Es stellt sich heraus, dass JAXB die Tatsache nicht mag, dass das bereitgestellte XML keine Namespace-Informationen enthält. Wie kann ich den Unmarshaller also anweisen, die Namespaces zu ignorieren?

EDIT2:

Nach einigen weiteren Recherchen konnte ich JAXB nicht dazu bringen, ohne Namespace-Überprüfung zu arbeiten. Ich habe das Tutorial bei verwendethttp://cooljavablogs.blogspot.de/2008/08/how-to-instruct-jaxb-to-ignore.html mein Problem zu umgehen. Keine schöne Lösung, aber das Beste zur Hand ...

Antworten auf die Frage(4)

Ihre Antwort auf die Frage