XML Einlesen mit JaxB

delphiking1980

Bekanntes Mitglied
Hallo,

ich habe schon sehr gute erfahrung mit JaxB gemacht, habe meine Objekte nach XML Transportiert und wieder zurück aber nun habe ich eine XML Datei welche ich erst zu einem Objekt machen muss.

Das XML sieht folgendermaßen aus

[XML]
<?xml version="1.0" encoding="UTF-8"?>

<BugCollection version="1.2.0" sequence="0" timestamp="1331021748468" analysisTimestamp="1331021753000" release="">
<Project filename="&lt;&lt;unnamed project&gt;&gt;" projectName="Test">
<Jar>D:\03_Workspace\ScreenTest\bin</Jar>
<SrcDir>D:\03_Workspace\ScreenTest\src</SrcDir>
</Project>
<BugInstance type="SE_BAD_FIELD" priority="2" abbrev="Se" category="BAD_PRACTICE">
<Class classname="MyScreen">
<SourceLine classname="MyScreen" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Class>
<Field classname="MyScreen" name="ge" signature="Ljava/awt/GraphicsEnvironment;" isStatic="false">
<SourceLine classname="MyScreen" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Field>
</BugInstance>
<BugInstance type="UPM_UNCALLED_PRIVATE_METHOD" priority="3" abbrev="UPM" category="PERFORMANCE">
<Class classname="MyScreen">
<SourceLine classname="MyScreen" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Class>
<Method classname="MyScreen" name="centerDialog" signature="(Ljavax/swing/JDialog;)V" isStatic="false">
<SourceLine classname="MyScreen" start="72" end="72" startBytecode="0" endBytecode="51" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Method>
</BugInstance>
<BugInstance type="UPM_UNCALLED_PRIVATE_METHOD" priority="3" abbrev="UPM" category="PERFORMANCE">
<Class classname="MyScreen">
<SourceLine classname="MyScreen" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Class>
<Method classname="MyScreen" name="getScreenCount" signature="()I" isStatic="false">
<SourceLine classname="MyScreen" start="97" end="97" startBytecode="0" endBytecode="51" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Method>
</BugInstance>
<BugInstance type="UPM_UNCALLED_PRIVATE_METHOD" priority="3" abbrev="UPM" category="PERFORMANCE">
<Class classname="MyScreen">
<SourceLine classname="MyScreen" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Class>
<Method classname="MyScreen" name="isFrameOnDefaultScreen" signature="()Z" isStatic="false">
<SourceLine classname="MyScreen" start="91" end="91" startBytecode="0" endBytecode="51" sourcefile="MyScreen.java" sourcepath="MyScreen.java"/>
</Method>
</BugInstance>
<Errors></Errors>
<FindBugsSummary timestamp="Tue, 6 Mar 2012 09:15:48 +0100" total_classes="1" total_bugs="4" total_size="15" num_packages="1" cpu_seconds="5.12" clock_seconds="5.24" peak_mbytes="33.90" gc_seconds="1.27" priority_3="3" priority_2="1">
<PackageStats package="" total_bugs="4" total_types="1" total_size="15" priority_3="3" priority_2="1">
<ClassStats class="MyScreen" interface="false" size="15" bugs="4" priority_3="3" priority_2="1"/>
</PackageStats>
</FindBugsSummary>
<ClassFeatures></ClassFeatures>
<History></History>
</BugCollection>
[/XML]

nur leider weiß ich nicht wie ich die Passagen zwischen den < und > in Variablen einlese da diese ja dem Knoten angehören.....

Ich hoffe es war verständlich was ich bezwecken möchte.
 

fastjack

Top Contributor
Schreib Dir eine DTD oder ein Schema dafür und lasse JAXB die Klassen generieren. Danach kannst Du das XML ganz normal einlesen und speichern.
 
N

nillehammer

Gast
Dann überlege Dir die Objektstruktur selbst. Die Elementnamen könnten Deine Klassennamen sein, die Attributnamen die Namen von Instanzvariablen. Die meisten sind vom Typ String, einige (z.B. das start-Attribut von CodeLine) sind Integers. Einige Elemente enthalten nur SimpleContent, die würde ich als Instanzvariable der übergeordneten Klasse implementieren. Auf den fertigen Code setzt Du noch die entsprechenden Annotations. Nachfolgend mal ein Beispiel für den Einstieg
Java:
public class BugCollection {

   private Project project;

   private List<BugInstance> bugInstances;

   ... getter und setter...
}

public class Project {

   private String fileName;

   private String projectName;

   private String jar;

   private String srcDir;

   ... getter und setter...
}
Mit den Annotationen, die man setzen muss, kennst Du Dich sicher besser aus als ich, wenn du schon mit JAXB erfolgreich gearbeitet hast. Schau Dir notfalls nochmal den Java-Code Deiner JAXB-Projekte an.
 
B

BOBOHelp

Gast
Das muss passen, danach xjc fertig:

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="BugCollection" type="BugCollectionType"/>
<xs:complexType name="BugCollectionType">
<xs:sequence>
<xs:element type="ProjectType" name="Project"/>
<xs:element type="BugInstanceType" name="BugInstance" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="xs:string" name="Errors"/>
<xs:element type="FindBugsSummaryType" name="FindBugsSummary"/>
<xs:element type="xs:string" name="ClassFeatures"/>
<xs:element type="xs:string" name="History"/>
</xs:sequence>
<xs:attribute type="xs:string" name="version"/>
<xs:attribute type="xs:string" name="sequence"/>
<xs:attribute type="xs:string" name="timestamp"/>
<xs:attribute type="xs:string" name="analysisTimestamp"/>
<xs:attribute type="xs:string" name="release"/>
</xs:complexType>
<xs:complexType name="ProjectType">
<xs:sequence>
<xs:element type="xs:string" name="Jar"/>
<xs:element type="xs:string" name="SrcDir"/>
</xs:sequence>
<xs:attribute type="xs:string" name="filename"/>
<xs:attribute type="xs:string" name="projectName"/>
</xs:complexType>
<xs:complexType name="FindBugsSummaryType">
<xs:sequence>
<xs:element type="PackageStatsType" name="PackageStats"/>
</xs:sequence>
<xs:attribute type="xs:string" name="timestamp"/>
<xs:attribute type="xs:string" name="total_classes"/>
<xs:attribute type="xs:string" name="total_bugs"/>
<xs:attribute type="xs:string" name="total_size"/>
<xs:attribute type="xs:string" name="num_packages"/>
<xs:attribute type="xs:string" name="cpu_seconds"/>
<xs:attribute type="xs:string" name="clock_seconds"/>
<xs:attribute type="xs:string" name="peak_mbytes"/>
<xs:attribute type="xs:string" name="gc_seconds"/>
<xs:attribute type="xs:string" name="priority_3"/>
<xs:attribute type="xs:string" name="priority_2"/>
</xs:complexType>
<xs:complexType name="SourceLineType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="classname" use="optional"/>
<xs:attribute type="xs:string" name="sourcefile" use="optional"/>
<xs:attribute type="xs:string" name="sourcepath" use="optional"/>
<xs:attribute type="xs:string" name="start" use="optional"/>
<xs:attribute type="xs:string" name="end" use="optional"/>
<xs:attribute type="xs:string" name="startBytecode" use="optional"/>
<xs:attribute type="xs:string" name="endBytecode" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="FieldType">
<xs:sequence>
<xs:element type="SourceLineType" name="SourceLine"/>
</xs:sequence>
<xs:attribute type="xs:string" name="classname"/>
<xs:attribute type="xs:string" name="name"/>
<xs:attribute type="xs:string" name="signature"/>
<xs:attribute type="xs:string" name="isStatic"/>
</xs:complexType>
<xs:complexType name="ClassStatsType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="class"/>
<xs:attribute type="xs:string" name="interface"/>
<xs:attribute type="xs:string" name="size"/>
<xs:attribute type="xs:string" name="bugs"/>
<xs:attribute type="xs:string" name="priority_3"/>
<xs:attribute type="xs:string" name="priority_2"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="MethodType">
<xs:sequence>
<xs:element type="SourceLineType" name="SourceLine"/>
</xs:sequence>
<xs:attribute type="xs:string" name="classname" use="optional"/>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="signature" use="optional"/>
<xs:attribute type="xs:string" name="isStatic" use="optional"/>
</xs:complexType>
<xs:complexType name="PackageStatsType">
<xs:sequence>
<xs:element type="ClassStatsType" name="ClassStats"/>
</xs:sequence>
<xs:attribute type="xs:string" name="package"/>
<xs:attribute type="xs:string" name="total_bugs"/>
<xs:attribute type="xs:string" name="total_types"/>
<xs:attribute type="xs:string" name="total_size"/>
<xs:attribute type="xs:string" name="priority_3"/>
<xs:attribute type="xs:string" name="priority_2"/>
</xs:complexType>
<xs:complexType name="BugInstanceType">
<xs:sequence>
<xs:element type="ClassType" name="Class"/>
<xs:element type="FieldType" name="Field" minOccurs="0"/>
<xs:element type="MethodType" name="Method" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="priority" use="optional"/>
<xs:attribute type="xs:string" name="abbrev" use="optional"/>
<xs:attribute type="xs:string" name="category" use="optional"/>
</xs:complexType>
<xs:complexType name="ClassType">
<xs:sequence>
<xs:element type="SourceLineType" name="SourceLine"/>
</xs:sequence>
<xs:attribute type="xs:string" name="classname" use="optional"/>
</xs:complexType>
</xs:schema>
[/XML]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C JAXB: XML-Elemente einlesen und als XML-Attribute ausgeben XML & JSON 7
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
L XML einlesen gleichnamige Elemente XML & JSON 5
T HTML mit Hilfe Jsoup einlesen XML & JSON 11
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
W XML einlesen und Attribute auslesen XML & JSON 1
M XML Werte einlesen aber wie am besten weiterverarbeiten? XML & JSON 13
L XML nur ein Element einlesen XML & JSON 2
L Jackson JSON: Probleme beim einlesen XML & JSON 1
S XML in JTable Einlesen XML & JSON 3
B XML analysieren und einlesen XML & JSON 26
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
Ollek XML Einlesen - Welche API ist die richtige? XML & JSON 14
X XML einlesen XML & JSON 6
jstei001 .xsd File wärend der Laufzeit einlesen und XMl rausschreiben XML & JSON 5
J XML mit russischem Inhalt einlesen XML & JSON 4
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
B Validierung nur beim einlesen oder auch beim schreiben? XML & JSON 4
B SAX-Parser - Dokumente einlesen und in einer Map ablegen XML & JSON 2
N xsd pattern in java einlesen XML & JSON 6
F Einlesen von JDBC connection in Java von XML XML & JSON 4
J wert IN einem tag einlesen/schreiben XML & JSON 4
F XML erzeugen aus JTree und wieder einlesen... XML & JSON 6
N JDOM: XML einlesen XML & JSON 4
F XML mit DOM einlesen- Teile in Arraylist speichern XML & JSON 4
S XML einlesen XML & JSON 18
F XML Datei in Java einlesen XML & JSON 4
H XMI über EMF / UML2 einlesen XML & JSON 7
S XML einlesen, analysieren, bearbeiten & als Textdatei ausgeben XML & JSON 1
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
H xml-Datei mit Attributen einlesen XML & JSON 3
C xml "zeilenweise" einlesen XML & JSON 6
B XML einlesen und in Datenbank schreiben XML & JSON 1
S XML-Schema einlesen um parsen zu erleichtern? XML & JSON 2
L Element einlesen <Telefon name="Karl">134313 XML & JSON 2
G XML Tag beim Einlesen manipulieren XML & JSON 2
J XML-Datei ein Array einlesen XML & JSON 10
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
M Liste in Baumstruktur einlesen XML & JSON 4
D nicht (ganz) valiedes XML einlesen! XML & JSON 19
S Einlesen einer xml Datei XML & JSON 4
S XML Datei einlesen, aber root überspringen XML & JSON 2
M XML einlesen - prüfen ob Element vorhanden XML & JSON 2
M NullPointerException bei Einlesen XML XML & JSON 3
J XML - schreiben und einlesen (Schema) XML & JSON 14
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
K JDOM SAXBuilder einlesen XML & JSON 6
G Newbe - Frage.XML - Datei einlesen und speichern XML & JSON 2
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
B XML String einlesen XML & JSON 4
M mit JDOM XML-Datei einlesen, die nicht "well-formed&quo XML & JSON 3
T Newbie Frage. CSS Stylesheet einlesen und suchen nach Tags XML & JSON 6
P OutOfMemoryError beim Einlesen einer XML-Datei XML & JSON 7
C Zeile herausfinden in der ein Fehler beim Einlesen entsteht XML & JSON 3
R wie kann ich ein xml file in einen string einlesen? XML & JSON 2
N Objekte via XML speichern und wieder einlesen XML & JSON 12
R POST REQUEST: XmlDocument mit getInputStream einlesen! XML & JSON 6
8u3631984 jaxb XML Mapper - Root Element mit Attribut XML & JSON 20
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
Rakshan Unmarshalling multiple namespaces with jaxb XML & JSON 0
B JAXB und HTML XML & JSON 1
E JAXB und java.nio.file.Path XML & JSON 4
W jaxb-api XML Feld nicht gesendet setzt das Defaultvalue nicht XML & JSON 3
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
S JAXB mit mehreren zusammenhängenden .xsd-Files XML & JSON 0
N JAXB: Überflüssiges Wrapper-Tag für Map-Einträge XML & JSON 0
D JAXB mit Map und Color XML & JSON 2
K JAXB-XML unvollständig XML & JSON 1
K JAXB Unmarshelling XML & JSON 1
E JAXB und abstrakte Klasse(n) XML & JSON 0
B JAXB - Unmarshal -> Kinder bekommen und die Kinder von den Kinder XML & JSON 7
B JAXB - Marshal ArrayList XML & JSON 2
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
B JAXB-Fehler bei REST-Api XML & JSON 0
M JAXB HashMap Dynamisches Laden XML & JSON 0
M JAXB @XMLID und @XMLIDREF, wie Daten hinzufügen XML & JSON 2
P JAXB-Problem XML & JSON 1
A JAXB: XMLMixed generieren XML & JSON 0
R [JAXB] XmlRootElement und XmlType gemeinsam nutzen XML & JSON 0
I XML to Object - Mapping mit JAXB 1.0 XML & JSON 1
L JAXB - Generischen Wert mit Liste belegen XML & JSON 1
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
K JAXB Annotation @XMLRootElement vererben XML & JSON 0
F JAXB Unmarshal - Kein "default Constructor" XML & JSON 2
F.S.WhiTeY JAXB: Schema nicht "erben" XML & JSON 2
B JAXB - manuell Klassen aus xsd XML & JSON 3
S Jaxb Unmarshalling Problem XML & JSON 4
S JAXB - Any Elementliste - wie Werte verändern? XML & JSON 4
R JAXB: A cycle is detected in the object graph. This will cause infinitely deep XML XML & JSON 6
M JAXB versucht abstrakte Klasse zu erzeugen XML & JSON 7
M JAXB: automatisches Groß schreiben Property XML & JSON 9
C Projekt - JAXB, EMF oder doch DOM? XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
J JAXB: Mehrmals abspeichern XML & JSON 3
W JAXB Binding customization XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben