------ Wiadomość oryginalna ------
Temat: Problem with unmarshalling if xml file contains information
about xsd
Data: Tue, 21 Aug 2012 10:44:54 +0200
Nadawca: Małgorzata Wolniewicz <[email protected]>
Odpowiedź-Do: Małgorzata Wolniewicz <[email protected]>
Firma/Organizacja: Poznań Supercomputing and Networking Center
Adresat: [email protected]
Dear Castor users,
I have encountered problem, which seems to be trivial, anyway I have no
idea how to solve it.
I created the simplest example I could. I want to have an xml file,
based on rules defined by my xsd schema, and a java client which will
perform unmarshalling.
My client works if the xml looks as follows:
<?xml version="1.0" encoding="UTF-8"?>
<person pesel="12345"
>
<firstname>Gosia</firstname>
<lastname>Wolniewicz</lastname>
<address>My address</address>
<children>
<child>
<data name="Kid1" age="8.0"/>
</child>
<child>
<data name="Kid2" age="4.5"/>
</child>
</children>
</person>
But I would like to include in my xml information which xsd defines it,
but when I add it my client stops working. It does not crash, but data
is not unmarshalled properly. My object has empty fields.
With schema information begin of my xml looks like:
<?xml version="1.0" encoding="UTF-8"?>
<person pesel="12345"
xmlns="http://www.example.org/Person"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/Person Person.xsd "
>
...
I enclose my xml (with and without the header), my client and my xsd. I
would be grateful if anyone could suggest how to solve the problem.
Best regards,
Gosia Wolniewicz
--
Małgorzata Wolniewicz
Poznań Supercomputing and Networking Center
Scientific Applications Department
email: [email protected]
www: http://www.man.poznan.pl
skype: gosiawolniewicz
tel. +48 61 858-21-74
<?xml version="1.0" encoding="UTF-8"?>
<person pesel="12345"
xmlns="http://www.example.org/Person"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/Person Person.xsd "
>
<firstname>Gosia</firstname>
<lastname>Wolniewicz</lastname>
<address>My address</address>
<children>
<child>
<data name="Kid1" age="8.0"/>
</child>
<child>
<data name="Kid2" age="4.5"/>
</child>
</children>
</person>
<?xml version="1.0" encoding="UTF-8"?>
<person pesel="12345"
>
<firstname>Gosia</firstname>
<lastname>Wolniewicz</lastname>
<address>My address</address>
<children>
<child>
<data name="Kid1" age="8.0"/>
</child>
<child>
<data name="Kid2" age="4.5"/>
</child>
</children>
</person>
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.exolab.castor.mapping.Mapping;
import org.exolab.castor.mapping.MappingException;
import org.exolab.castor.xml.MarshalException;
import org.exolab.castor.xml.Unmarshaller;
import org.exolab.castor.xml.ValidationException;
/**
*
*/
/**
* @author gosiaw
*
*/
public class CastorUnmarshallingExample {
/**
*
*/
public CastorUnmarshallingExample() {
// TODO Auto-generated constructor stub
}
/**
* @param args
* @throws ValidationException
* @throws MarshalException
* @throws MappingException
* @throws IOException
*/
public static void main(String[] args) throws MarshalException,
ValidationException, IOException, MappingException {
Mapping mapping = new Mapping();
try {
mapping.loadMapping("/Users/gosiaw/Vine/XMLTests/src/Mappings.xml");
FileReader reader = new
FileReader("/Users/gosiaw/Vine/XMLTests/src/Test.xml");
Unmarshaller unmarshaller = new Unmarshaller(Person.class);
unmarshaller.setMapping(mapping);
unmarshaller.setValidation(true);
Person person = (Person)unmarshaller.unmarshal(reader);
System.out.println("Pesel: " + person.getPesel());
System.out.println("First Name: " + person.getFirstName());
System.out.println("Last Name: " + person.getLastName());
System.out.println("Address: " + person.getAddress());
List<Child> children = person.getChildren();
if (children != null) {
System.out.println("Children:");
for (Iterator<Child> i = children.iterator(); i.hasNext(); ) {
Child child = (Child)i.next();
System.out.println("Name: " + child.getName());
System.out.println("Age: " + child.getAge());
}
} else {
System.out.println("No children");
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace(System.err);
}
}
}
import java.util.List;
/**
*
*/
/**
* @author gosiaw
*
*/
public class Person {
private java.lang.String pesel;
private java.lang.String firstName;
private java.lang.String lastName;
private java.lang.String address;
private List<Child> children;
public Person() {
}
public java.lang.String getPesel() {
return pesel;
}
public void setPesel(java.lang.String pesel) {
this.pesel = pesel;
}
public java.lang.String getFirstName() {
return firstName;
}
public void setFirstName(java.lang.String firstName) {
this.firstName = firstName;
}
public java.lang.String getLastName() {
return lastName;
}
public void setLastName(java.lang.String lastName) {
this.lastName = lastName;
}
public java.lang.String getAddress() {
return address;
}
public void setAddress(java.lang.String address) {
this.address = address;
}
public void setChildren(List<Child> children) {
this.children = children;
}
public List<Child> getChildren() {
return children;
}
public void writeData() {
System.out.println("pesel=" + getPesel());
System.out.println("firstName=" + getFirstName());
System.out.println("lastName=" + getLastName());
System.out.println("address=" + getAddress());
if (getChildren() != null) {
System.out.println("Number of children: " +
getChildren().size());
}
}
}
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email