eaglestar
Mitglied
Einen schönen Freitag wünsche ich euch!
Ich habe Dr. Google und Krankenpflegerin Sufu mehrfach aufgesucht, aber mein Leider geht weiter.
Worum gehts:
Im folgenden Code seht ihr mein Programm und zwei Klassen.
Ich möchte mit dem Programm (erstmal) nur eine XML Datei einlesen und ein bestimmtes Element (GoodUrls) auf der Konsole ausgeben lassen.
Diverse Tutorial haben mir den Weg geleitet doch folgende Codezeile löst eine Exception aus.
Die Fehlermeldung dazu:
Die Klasse Eef die verlang wird, bietet mir aber nicht die Möglichkeit auf das XML-Element GoodUrls zu zugreifen. Deswegen möchte ich das Objekt als Collection casten um dann die Methode getGoodUrls() aufzurufen.
Hier nun der Code der beiden Klassen und des Programms:
Programm:
Klasse Eef:
Klasse Collection:
Worin liegt der Fehler?
Gruß
eagle
Ich habe Dr. Google und Krankenpflegerin Sufu mehrfach aufgesucht, aber mein Leider geht weiter.
Worum gehts:
Im folgenden Code seht ihr mein Programm und zwei Klassen.
Ich möchte mit dem Programm (erstmal) nur eine XML Datei einlesen und ein bestimmtes Element (GoodUrls) auf der Konsole ausgeben lassen.
Diverse Tutorial haben mir den Weg geleitet doch folgende Codezeile löst eine Exception aus.
Code:
Collection eef = (Collection)unmarshaller.unmarshal(new FileInputStream("config.xml"));
Die Fehlermeldung dazu:
Code:
java.lang.ClassCastException: jaxb.Eef cannot be cast to jaxb.Collection
Die Klasse Eef die verlang wird, bietet mir aber nicht die Möglichkeit auf das XML-Element GoodUrls zu zugreifen. Deswegen möchte ich das Objekt als Collection casten um dann die Methode getGoodUrls() aufzurufen.
Hier nun der Code der beiden Klassen und des Programms:
Programm:
Code:
package jaxb;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
//import javax.xml.bind.Marshaller;
import xmlparser.Url;
import java.io.*;
import java.util.Iterator;
import java.util.List;
public class A {
public static void main(String[] args) {
try{
Collection collection = new Collection();
GoodUrls goodUrls = new GoodUrls();
JAXBContext jc = JAXBContext.newInstance("jaxb");
Unmarshaller unmarshaller = jc.createUnmarshaller();
//Eef laut Tutoarial falsch. Richtig ist Collection um GoodUrls zu selektieren
Collection eef = (Collection)unmarshaller.unmarshal(new FileInputStream("config.xml"));
//System.err.println(unmarshaller.unmarshal(new FileInputStream("config.xml")).getClass().getName());
/*
goodUrls = collection.getGoodUrls();
Klasse Eef:
Code:
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1-b02-fcs
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2009.01.20 at 02:13:39 PM CET
//
package jaxb;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element ref="{}config"/>
* <element ref="{}signature"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"config",
"signature"
})
@XmlRootElement(name = "eef")
public class Eef {
@XmlElement(required = true)
protected Config config;
@XmlElement(required = true)
protected Signature signature;
/**
* Gets the value of the config property.
*
* @return
* possible object is
* {@link Config }
*
*/
public Config getConfig() {
return config;
}
/**
* Sets the value of the config property.
*
* @param value
* allowed object is
* {@link Config }
*
*/
public void setConfig(Config value) {
this.config = value;
}
/**
* Gets the value of the signature property.
*
* @return
* possible object is
* {@link Signature }
*
*/
public Signature getSignature() {
return signature;
}
/**
* Sets the value of the signature property.
*
* @param value
* allowed object is
* {@link Signature }
*
*/
public void setSignature(Signature value) {
this.signature = value;
}
}
Klasse Collection:
Code:
//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1-b02-fcs
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2009.01.20 at 02:13:39 PM CET
//
package jaxb;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType>
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element ref="{}bad_urls"/>
* <element ref="{}good_urls"/>
* <element ref="{}prerequisite_results"/>
* <element ref="{}testwords"/>
* </sequence>
* <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}NMTOKEN" />
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"badUrls",
"goodUrls",
"prerequisiteResults",
"testwords"
})
@XmlRootElement(name = "collection")
public class Collection {
@XmlElement(name = "bad_urls", required = true)
protected BadUrls badUrls;
@XmlElement(name = "good_urls", required = true)
protected GoodUrls goodUrls;
@XmlElement(name = "prerequisite_results", required = true)
protected PrerequisiteResults prerequisiteResults;
@XmlElement(required = true)
protected String testwords;
@XmlAttribute(name = "Name", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlSchemaType(name = "NMTOKEN")
protected String name;
/**
* Gets the value of the badUrls property.
*
* @return
* possible object is
* {@link BadUrls }
*
*/
public BadUrls getBadUrls() {
return badUrls;
}
/**
* Sets the value of the badUrls property.
*
* @param value
* allowed object is
* {@link BadUrls }
*
*/
public void setBadUrls(BadUrls value) {
this.badUrls = value;
}
/**
* Gets the value of the goodUrls property.
*
* @return
* possible object is
* {@link GoodUrls }
*
*/
public GoodUrls getGoodUrls() {
return goodUrls;
}
/**
* Sets the value of the goodUrls property.
*
* @param value
* allowed object is
* {@link GoodUrls }
*
*/
public void setGoodUrls(GoodUrls value) {
this.goodUrls = value;
}
/**
* Gets the value of the prerequisiteResults property.
*
* @return
* possible object is
* {@link PrerequisiteResults }
*
*/
public PrerequisiteResults getPrerequisiteResults() {
return prerequisiteResults;
}
/**
* Sets the value of the prerequisiteResults property.
*
* @param value
* allowed object is
* {@link PrerequisiteResults }
*
*/
public void setPrerequisiteResults(PrerequisiteResults value) {
this.prerequisiteResults = value;
}
/**
* Gets the value of the testwords property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getTestwords() {
return testwords;
}
/**
* Sets the value of the testwords property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setTestwords(String value) {
this.testwords = value;
}
/**
* Gets the value of the name property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getName() {
return name;
}
/**
* Sets the value of the name property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setName(String value) {
this.name = value;
}
}
Worin liegt der Fehler?
Gruß
eagle