Hallo Leute. Ich bin dabei eine Größe XML Datei mit JAVA einlesen und in eine Datenbank speichern. Ich benutze dazu Spring Batch.
Ich habe Zwei Problemen. erste : Ich kann nicht Die Attribute in XML als Datei in Datenbank speichern. Ich denke es liest überhaupt nicht die Attribute.
2 : genaue wie Problem 1. aber mit Child Tags .
Hier ist die Java Code für Objecten.
	
	
	
	
	
		
	
und hier die Preparetstatmentsetter :
	
	
	
	
	
		
	
Und hier meine BatchConfig :
	
	
	
	
	
		
	
Ich werde dankbar , wenn jemandem mir helfen kann.
			
			Ich habe Zwei Problemen. erste : Ich kann nicht Die Attribute in XML als Datei in Datenbank speichern. Ich denke es liest überhaupt nicht die Attribute.
2 : genaue wie Problem 1. aber mit Child Tags .
Hier ist die Java Code für Objecten.
		Java:
	
	import java.sql.Date;
import java.util.List;
import org.springframework.lang.Nullable;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
@XStreamAlias("beruf")
public class BerufXml {
    @XStreamAsAttribute
    @XStreamAlias("bezeichnung_nk")
    private String bezeichnung;
    private String bezeichnung_nk;
    private String bezeichnung_nl;
    @XStreamAlias("id")
    private float codeba;
    @XStreamAlias("ausbildung")
    private int ausbildung;
    private int kundenid;
    private int internalonly;
    private int berufsgrupperef;
    @Nullable
    private String berufskennzeichen;
    @XStreamAlias("lbkgruppe")
    @XStreamImplicit
    private List<String> lbkgruppes;
    @XStreamAlias("typ")
    private String typ;
    // @XStreamAlias("hochschulberuf")
    private String hochschulberuf;
    @Nullable
    private Date prufungtermin;
    @XStreamAsAttribute
    @XStreamAlias("qualifikationsNiveaus")
    @XStreamImplicit
    private List<String> qualifikationsNiveaus;
    @XStreamAlias("ebene")
    private int ebene;
    @XStreamAlias("zustand")
    private String zustand;
    @XStreamAlias("kuenstler")
    private String kuenstler;
    @XStreamAlias("suchname_nl")
    private String suchname_nl;
    public int getEbene() {
        return ebene;
    }
    public void setEbene(int ebene) {
        this.ebene = ebene;
    }
    public String getSuchname_nl() {
        return suchname_nl;
    }
    public String setSuchname_nl(String suchname_nl) {
        return suchname_nl;
    }
    public String getKuenstler() {
        return kuenstler;
    }
    public String setKuenstler(String kuenstler) {
        return kuenstler;
    }
    public String getZustand() {
        return zustand;
    }
    public String setZustand(String zustand) {
        return zustand;
    }
    public String getBezeichnung() {
        return bezeichnung;
    }
    public void setBezeichnung(String bezeichnung) {
        this.bezeichnung = bezeichnung;
    }
    public String getTyp() {
        return typ;
    }
    public void setTyp(String typ) {
        this.typ = typ;
    }
    public float getCodeba() {
        return codeba;
    }
    public void setCodeba(float codeba) {
        this.codeba = codeba;
    }
    public int getAusbildung() {
        return ausbildung;
    }
    public void setAusbildung(int ausbildung) {
        this.ausbildung = ausbildung;
    }
    public int getKundenid() {
        return kundenid;
    }
    public void setKundenid(int kundenid) {
        this.kundenid = kundenid;
    }
    public int getInternalonly() {
        return internalonly;
    }
    public void setInternalonly(int internalonly) {
        this.internalonly = internalonly;
    }
    public int getBerufsgrupperef() {
        return berufsgrupperef;
    }
    public void setBerufsgrupperef(int berufsgrupperef) {
        this.berufsgrupperef = berufsgrupperef;
    }
    public List<String> getQualifikationsNiveaus() {
        return qualifikationsNiveaus;
    }
    public void setQualifikationsNiveaus(List<String> qualifikationsNiveaus) {
        this.qualifikationsNiveaus = qualifikationsNiveaus;
    }
    public String getbezeichnung_nk() {
        return bezeichnung_nk;
    }
    public void setbezeichnung_nk(String bezeichnung_nk) {
        this.bezeichnung_nk = bezeichnung_nk;
    }
    public String getBezeichnung_nl() {
        return bezeichnung_nl;
    }
    public void setBezeichnung_nl(String bezeichnung_nl) {
        this.bezeichnung_nl = bezeichnung_nl;
    }
    public String getBerufskennzeichen() {
        return berufskennzeichen;
    }
    public void setBerufskennzeichen(String berufskennzeichen) {
        this.berufskennzeichen = berufskennzeichen;
    }
    public Date getPrufungtermin() {
        return prufungtermin;
    }
    public String getHochschulberuf() {
        return hochschulberuf;
    }
    public void setHochschulberuf(String hochschulberuf) {
        this.hochschulberuf = hochschulberuf;
    }
    public void setPrufungtermin(Date prufungtermin) {
        this.prufungtermin = prufungtermin;
    }
    public List<String> getLbkgruppes() {
        return lbkgruppes;
    }
    public void setLbkgruppes(List<String> lbkgruppes) {
        this.lbkgruppes = lbkgruppes;
    }
    public String getBezeichnung_nk() {
        return bezeichnung_nk;
    }
    public void setBezeichnung_nk(String bezeichnung_nk) {
        this.bezeichnung_nk = bezeichnung_nk;
    }
    @Override
    public String toString() {
        return "Beruf [bezeichnung" + bezeichnung + ",codeba=" + codeba + ",ausbildung=" + ausbildung + ",kundenid="
                + kundenid + ",internalonly=" + internalonly + "" + ",berufsgrupperef=" + berufsgrupperef
                + ",berufskennzeichen=" + berufskennzeichen + ",lbkgruppes=" + lbkgruppes + ",hochschulberuf="
                + hochschulberuf + "qualifikationsNiveaus=" + qualifikationsNiveaus + ",bezeichnung_nk="
                + bezeichnung_nk + ",bezeichnung_nl=" + bezeichnung_nl + " ]";
    }
}und hier die Preparetstatmentsetter :
		Java:
	
	public class BerufpreparedStatementSetter implements ItemPreparedStatementSetter<BerufXml> {
    @Override
    public void setValues(BerufXml beruf, PreparedStatement ps) throws SQLException {
        ps.setString(1, beruf.getBezeichnung_nk());
        ps.setFloat(2, beruf.getCodeba());
        ps.setString(3, beruf.getTyp());
        ps.setInt(4, "a".equalsIgnoreCase(beruf.getTyp()) ? 1 : 0);
        ps.setInt(5, beruf.getKundenid());
        ps.setInt(6, beruf.getInternalonly());
        ps.setInt(7, beruf.getBerufsgrupperef());
        ps.setString(8, beruf.getBerufskennzeichen());
        ps.setInt(9, "ja".equalsIgnoreCase(beruf.getHochschulberuf()) ? 1 : 0);
        ps.setString(10, beruf.getBezeichnung_nk());
        ps.setString(11, beruf.getBezeichnung_nl());
        ps.setDate(12, beruf.getPrufungtermin());
        ps.setInt(13, beruf.getEbene());
        ps.setString(14, beruf.getZustand());
        ps.setString(15, beruf.getKuenstler());
        ps.setString(16, beruf.getSuchname_nl());
    }
}Und hier meine BatchConfig :
		Java:
	
	@Configuration
@EnableBatchProcessing
public class BatchConfig {
    @Autowired
    private JobBuilderFactory jobBuilderFactory;
    @Autowired
    private StepBuilderFactory stepBuilderFactory;
    @Autowired
    private DataSource datasource;
    @Bean
    public BerufItemProcessor processor() {
        return new BerufItemProcessor();
    }
    public static void setupDefaultSecurity(XStream xstream) {
        xstream.allowTypesByWildcard(new String[] { "com.datenbankberufe.model.**" });
    }
    @Bean
    public StaxEventItemReader<BerufXml> reader() {
        StaxEventItemReader<BerufXml> reader = new StaxEventItemReader<BerufXml>();
        reader.setResource(new ClassPathResource("vam_beruf_kurz.xml"));
        reader.setFragmentRootElementName("beruf");
        Map<String, String> aliasesMap = new HashMap<String, String>();
        aliasesMap.put("beruf", "com.datenbankberufe.model.BerufXml");
        aliasesMap.put("qualifikationsNiveau", "com.datenbankberufe.model.QualifikationsNiveau");
        XStreamMarshaller marshaller = new XStreamMarshaller();
        marshaller.setAliases(aliasesMap);
        marshaller.getXStream().allowTypesByWildcard(new String[] { "com.datenbankberufe.model.**" });
        marshaller.getXStream().processAnnotations(BerufXml.class);
        reader.setUnmarshaller(marshaller);
        return reader;
    }
    @Bean
    public JdbcBatchItemWriter<BerufXml> writer() {
        JdbcBatchItemWriter<BerufXml> writer = new JdbcBatchItemWriter<BerufXml>();
        writer.setDataSource(datasource);
        writer.setSql(
                "INSERT INTO beruf(bezeichnung,codeba,typ,ausbildung,kundenid,internalonly,berufsgrupperef,berufskennzeichen,hochschulberuf,bezeichnung_mk,bezeichnung_wk,prufungtermin,ebene,zustand,kuenstler,suchname_nl) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
        writer.setItemPreparedStatementSetter(new BerufpreparedStatementSetter());
        return writer;
    }
    @Bean
    public Step step1() {
        return stepBuilderFactory.get("step1").<BerufXml, BerufXml>chunk(100).reader(reader()).processor(processor())
                .writer(writer()).build();
    }
    @Bean
    public Job exportBerufJob() {
        return jobBuilderFactory.get("importBerufJob").incrementer(new RunIdIncrementer()).flow(step1()).end().build();
    }
}Ich werde dankbar , wenn jemandem mir helfen kann.
 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		