JAXB Unmarshalling liefert nur null

ben89

Grünschnabel
hallo zusammen,

unmarshalling liefert bei mir leider nur den wert null. Ich komm einfach nicht darauf was nicht passt. Wäre dankbar für eure Hilfe.

Code:
public Mainclass() throws JAXBException {

	
Property unmarshal = JAXB.unmarshal(new File("src/main/resources/property.xml"), Property.class);
		System.out.println(unmarshal.getPropertyName());
	}

Die Property Klasse
Code:
@XmlElement(required = true)

private String PropertyName;
public String getPropertyName() {
		return PropertyName;
	}

und schliesslich meine xml
Code:
<?xml version="1.0" encoding="UTF-8"?>

<Propertydefinitions>
	<Property>
		<PropertyName>Name</PropertyName>
		<Default>default</Default>
		<Datetype>Integer</Datetype>
		<MaxLength>999</MaxLength>
	</Property>
</Propertydefinitions>


Das Ergebnis ist nur "null". Woran könnte des liegen?

grüße benny
 
Hallo,

schau mal hier:
Java:
package de.tutorials.training;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="Propertydefinitions")
public class Property {
	@XmlElement(name="PropertyName") private String propertyName;
	@XmlElement(name="Default") private String defaultValue;
	@XmlElement(name="Datatype") private String dataType;
	@XmlElement(name="MaxLength") private int maxLength;
	
	public String getPropertyName() {
		return propertyName;
	}
	public void setPropertyName(String propertyName) {
		this.propertyName = propertyName;
	}
	public String getDefaultValue() {
		return defaultValue;
	}
	public void setDefaultValue(String defaultValue) {
		this.defaultValue = defaultValue;
	}
	public String getDataType() {
		return dataType;
	}
	public void setDataType(String dataType) {
		this.dataType = dataType;
	}
	public int getMaxLength() {
		return maxLength;
	}
	public void setMaxLength(int maxLength) {
		this.maxLength = maxLength;
	}
	@Override
	public String toString() {
		return "Property [propertyName=" + propertyName + ", defaultValue="
				+ defaultValue + ", dataType=" + dataType + ", maxLength="
				+ maxLength + "]";
	}
	
	
}

data.xml
XML:
<?xml version="1.0" encoding="UTF-8"?>
 <Propertydefinitions>
    <Property>
        <PropertyName>Name</PropertyName>
        <Default>default</Default>
        <Datetype>Integer</Datetype>
        <MaxLength>999</MaxLength>
    </Property>
</Propertydefinitions>

Java:
package de.tutorials.training;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class PropertyDefinitions {
	@XmlElement(name="Property") private List<Property> properties;

	public List<Property> getProps() {
		return properties;
	}

	public void setProps(List<Property> props) {
		this.properties = props;
	}
	
	
}

Java:
package de.tutorials.training;

import java.io.File;

import javax.xml.bind.JAXB;

public class JAXBExample {

	public static void main(String[] args) {
		PropertyDefinitions o = JAXB.unmarshal(new File("data.xml"),PropertyDefinitions.class);
		System.out.println(o.getProps().get(0));
	}

}

Ausgabe:
Code:
Property [propertyName=Name, defaultValue=default, dataType=null, maxLength=999]

Siehe auch:
http://www.tutorials.de/java/263489-jaxb-tutorial.html

Gruß Tom
 
Zuletzt bearbeitet von einem Moderator:
Zurück