Konvertieren von xml-string an Java-Objekt
Ich habe die folgende xml-string. Möchte ich es konvertieren in ein java-Objekt, um die Karte jeden tag mit den Feldern des Objekts. Ist es besser, wenn ich stellen wir die unterschiedlichen Feldnamen im Vergleich zu tag-Namen. Wie kann ich das tun? Ich bin auf der Suche auf JAXB, aber ich bin immer noch verwirrt über Teile wie "ns4:Antwort" und tags innerhalb von tags. Vielen Dank im Voraus...
<ns4:response>
<count>1</count>
<limit>1</limit>
<offset>1</offset>
<ns3:payload xsi:type="productsPayload">
<products>
<product>
<avgRating xsi:nil="true"/>
<brand>Candie's</brand>
<description>
<longDescription>
long descriptions
</longDescription>
<shortDescription>
short description
</shortDescription>
</description>
<images>
<image>
<altText>alternate text</altText>
<height>180.0</height>
<url>
url
</url>
<width>180.0</width>
</image>
</images>
<price>
<clearancePrice xsi:nil="true"/>
<regularPrice xsi:nil="true"/>
<salePrice>28.0</salePrice>
</price>
</product>
</products>
</ns3:payload>
</ns4:response>
- außerdem ist es sowieso, dass ich das auto wandeln diese in eine Java-Klasse...?
- mögliche Duplikate stackoverflow.com/questions/779755/...
- tags in tags, das ist es, was irritiert mich? und auch "<ns4:Antwort - >"
- Ich hoffe, das ist nicht alles, was Sie für die XML-Zeichenfolge, da die namespace-Präfixe (
ns4
etc) nicht definiert sind, so dass Sie nicht in der Lage sein, zu analysieren, es mit standard-tools - Sie sollten lernen, zu suchen, ALSO bevor Sie Fragen Ihre Fragen
Du musst angemeldet sein, um einen Kommentar abzugeben.
JAXB die Java-standard (JSR-222) für die Umwandlung der Objekte to/from XML. Folgendes sollte helfen:
Unmarshalling von einem String
Müssen Sie wickeln Sie die
String
in einer Instanz vonStringReader
vor Ihrer JAXB impl können unmarshal es.Anderen Feld-und XML-Namen
Können Sie die
@XmlElement
annotation angeben, was Sie wollen, dass der name des Elements zu werden. Standardmäßig JAXB sieht auf Eigenschaften. Wenn Sie möchten, um die mappings auf den Feldern, dann müssen Sie@XmlAccessorType(XmlAccessType.FIELD)
.Namespaces
Den
@XmlRootElement
und@XmlElement
Anmerkungen können Sie auch angeben namespace-Qualifikation, wo Sie benötigt wird.Weitere Informationen
JAXB ist eine gute Aufnahme. Wenn Sie eine XSD-Datei für dieses Dokument werden sehr einfach. JAXB kann generieren von Java-code für specidied schema.
Wenn Sie nicht über eine XSD-Datei, die Sie brauchen, um vorzubereiten Java-Klassen auf Ihre eigenen. Suchen JAXB-tutorial und Dokumentation http://jaxb.java.net/tutorial/.
Tags in Tags sind einfach nur verschachtelte Objekte für JAXB.
ns4
ist ein namespace. JAXB unterstützt namespaces - nur sieht es in der Dokumentation. Sie können mithilfe von Anmerkungen stellen wir die unterschiedlichen Feldnamen als tags in XML. Follwo der Dokumentation.Incase haben Sie die XSD für die oben gezeigte XML.
Ich würde Ihnen empfehlen auf Jaxb.
JAXB erstellt von java-Objekten aus XML-Dateien.
Sie müssen zuerst generieren von Java-Klassen mit jaxb code-generator nimmt die XSD-Datei als Eingabe und dann serialisieren/Deserialisieren diese xml-Dateien entsprechend.
Wenn Sie bereits über die xml, und kommt mehr als ein Attribut, können Sie behandeln es wie folgt:
die Methode getCharacterDataFromElement ist