Please, send me schema you modified and class you are generated

Seems that I send you wrong version of xsd. Here is what I'm using. Only 
different is ref
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema";
        targetNamespace="http://example.com/foo";
        xmlns:tns="http://example.com/foo"; elementFormDefault="qualified">
        <complexType name="fooType">
                <sequence>
                        <element name="children" minOccurs="0" nillable="false">
                                <complexType>
                                        <sequence>
                                                <element ref="tns:foo"
                                                        maxOccurs="unbounded">
                                                </element>
                                        </sequence>
                                </complexType>
                        </element>
                </sequence>
                <attribute name="name"></attribute>
        </complexType>
        <element name="foo" type="tns:fooType"></element>
</schema>


Terv.
Antoni

-----Original Message-----
From: Werner Guttmann [mailto:[EMAIL PROTECTED]
Sent: 10. huhtikuuta 2008 12:45
To: [email protected]
Subject: Re: [castor-user] How to use hierarchical objects with wrapper

Just to let you know, after modifying your XML schema slightly, I was able to 
pruduce the desired output as follows just by generating classes from the XML 
schema given, without having to write a mapping file.

Regards
Werner
Committer, Castor

Alatalo, Antoni wrote:
> Hi,
> Here is all in nutshell:
> SCHEMA:
> <?xml version="1.0" encoding="UTF-8"?> <schema
> xmlns="http://www.w3.org/2001/XMLSchema";
>         targetNamespace="http://example.com/foo";
>         xmlns:tns="http://example.com/foo"; elementFormDefault="qualified">
>         <complexType name="fooType">
>                 <sequence>
>                         <element name="children" minOccurs="0">
>                                 <complexType>
>                                         <sequence>
>                                                 <element name="child" 
> type="tns:fooType"
>                                                         maxOccurs="unbounded">
>                                                 </element>
>                                         </sequence>
>                                 </complexType>
>                         </element>
>                 </sequence>
>                 <attribute name="name"></attribute>
>         </complexType>
>         <element name="foo" type="tns:fooType"></element> </schema>
>
> CASTOR
> <?xml version="1.0"?>
> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
>                          "http://castor.org/mapping.dtd";> <mapping>
>         <class name="com.example.Foo" auto-complete="false">
>                 <map-to xml="foo" ns-uri="http://example.com/foo";
>                         ns-prefix="foo" />
>                 <field name="name" type="java.lang.String">
>                         <bind-xml name="name" node="attribute" />
>                 </field>
>                 <field name="children" collection="collection"
>                         type="com.example.Foo" container="false">
>                 </field>
>         </class>
> </mapping>
>
> BEAN
> package com.example;
> import java.util.Collection;
>
> public class Foo {
>         private String name;
>         private Collection<Foo> children;
>
>         public Foo(){}
>         public Foo(String name){
>                 setName(name);
>         }
>         public Collection<Foo> getChildren() {
>                 return children;
>         }
>         public void setChildren(Collection<Foo> children) {
>                 this.children = children;
>         }
>         public String getName() {
>                 return name;
>         }
>         public void setName(String name) {
>                 this.name = name;
>         }
> }
>
>
> TESTCASE:
> package com.example;
>
> import java.io.IOException;
> import java.io.StringReader;
> import java.io.StringWriter;
> import java.util.Collection;
> import java.util.HashSet;
>
> import junit.framework.TestCase;
> import org.exolab.castor.xml.XMLContext; 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.Marshaller; import
> org.exolab.castor.xml.ValidationException;
>
> import com.example.Foo;
>
> public class CastorFooTest extends TestCase {
>         Mapping mapping = null;
>         XMLContext context = null;
>         public void setUp() throws IOException, MappingException{
>                 mapping = new Mapping();
>                 mapping.loadMapping("src/META-INF/castor/foo-castor.xml");
>                 context = new XMLContext();
>                 context.addMapping(mapping);
>         }
>         public void testMarhallFoo() throws IOException, MappingException, 
> MarshalException, ValidationException{
>                 Marshaller marshaller = context.createMarshaller();
>                 StringWriter writer = new StringWriter();
>                 marshaller.setWriter(writer);
>                 marshaller.setMarshalAsDocument(false);
>                 marshaller.setMapping(mapping);
>                 marshaller.setSuppressNamespaces(false);
>                 marshaller.marshal(getFoo());
>                 assertEquals(expected, writer.getBuffer().toString());
>         }
>         public void testUnMarhallFoo() throws IOException, MappingException, 
> MarshalException, ValidationException{
>                 Unmarshaller unmarshaller = context.createUnmarshaller();
>                 StringReader reader = new StringReader(expected);
>                 Foo result = (Foo)unmarshaller.unmarshal(reader);
>                 Foo exp = getFoo();
>                 assertEquals(exp.getName(), result.getName());
>         }
>         private Foo getFoo(){
>                 Foo foo = getFoo("");
>                 Collection<Foo> children = new HashSet<Foo>();
>                 children.add(getFoo("2"));
>                 children.add(getFoo("1"));
>                 foo.setChildren(children);
>                 return foo;
>         }
>         private Foo getFoo(String s){
>                 Foo foo = new Foo("foo".concat(s));
>                 return foo;
>         }
>         private String expected = "<foo:foo
> xmlns:foo=\"http://example.com/foo\";
> name=\"foo\"><foo:children><foo:foo name=\"foo1\"></foo:foo><foo:foo
> name=\"foo2\"></foo:foo></foo:children></foo:foo>";
> }
>
>
> Expected output
> <?xml version="1.0" encoding="UTF-8"?> <foo:foo name="foo"
> xmlns:foo="http://example.com/foo";>
>         <foo:children>
>                 <foo:foo name="foo1"/>
>                 <foo:foo name="foo2"/>
>         </foo:children>
> </foo:foo>
>
> OUTPUT I GET:
> <?xml version="1.0" encoding="UTF-8"?> <foo:foo name="foo"
> xmlns:foo="http://example.com/foo";>
>         <children> - ERROR NUMBER 1
>                 <foo:foo name="foo1">
>                         <children /> - ERROR NUMBER 2
>                 </foo:foo>
>                 <foo:foo name="foo2">
>                         <children /> - ERROR NUMBER 2
>                 </foo:foo>
>         </children> - ERROR NUMBER 1
> </foo:foo>
>
> Output I get isn't valid:
> 1. <children> element must have foo prefix as all others:
> <foo:children> 2. there must not be empty <children/> element at all
>
> Regards.
> Antoni
>
> -----Original Message-----
> From: Werner Guttmann [mailto:[EMAIL PROTECTED]
> Sent: 9. huhtikuuta 2008 15:13
> To: [email protected]
> Subject: Re: [castor-user] How to use hierarchical objects with
> wrapper
>
>
>
> Alatalo, Antoni wrote:
>> Hi,
>> I have Object A that has Collection of Objects A. Normal hierarchy
>> structure.
>> I got to work it almost well except two details.
>> The collection is wrapped. It should look like this Lets name
>> namespace like bar <bar:foo name="1">
>>         <bar:children>
>>                 <bar:foo name="2*"*/>
>>                 <bar:foo name="3"/>
>>         </bar:children>
>> </bar:foo>
>>
>> The problem is that chioldren while marhalling doen't get bar prefix.
>> This is output after marshalling
>> <bar:foo name="1">
>>         <children>
>>                 <bar:foo name="2*"*>
>>                         <children/>
>>                 </bar:foo>
>>                 <bar:foo name="3">
>>                         <children/>
>>                 </bar:foo>
>>         </children>
>> </bar:foo>
>>
>> How can i configure mapper to use prefix with "children" wrapper?
>> Without this xml is not valid!
> What version of Castor are you using ? And what does your mapping for the 
> relevant classes look like ? It looks like you are using the locations 
> attribute on the field mapping for the 'bar' children ?
>
>> Teh next thing is empty collection. How can i configure mapper to
>> exclude empty or null not required values?
> Can you show us some sample XML that highlights your problem ? It just isn't 
> fully clear to me what the problem is.
>
>> Thank you
>> *Antoni Alatalo
>> *Ohjelmistoasiantuntija
>> Kuntatoimiala, sosiaalitoimi
>> _________________________________________
>>
>> *Logica **- Releasing your potential
>>
>> *Karvaamokuja 2
>> PL 38
>> 00381 Helsinki
>> Vaihde: 010 302 010
>> Suora: 040 583 1097
>> [EMAIL PROTECTED]
>> _www.logica.fi_ <http://www.logicacmg.fi> WM-datan nimi on nyt
>> *Logica.*
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe from this list, please visit:
>
>     http://xircles.codehaus.org/manage_email
>
>
>


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email




---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to