I guess descriptors are not generated. Do not use nodesc
option in source generation.


On Wed, 2003-10-15 at 12:10, Chopra, Manish wrote:
Hi 
Hi
I want to use Castor...but I am stuck while trying it out
Can you help me.......?

I Have an Object 'AipXMLContainer' which contains a collection of other
objects 'AipXml' I want to marshal this Object When I marshal the
AipXMLContainer I get following XML

<?xml version="1.0" encoding="UTF-8"?>
<aip-xMLContainer>
	<aip-xmls
xsi:type="java:model.content_data_access.AIPOPImpl.AipXml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
		<XML>src1.xml</XML>
		<location>c:/temp</location>
		<date>2003-03-02T06:24:33.597Z</date>
	</aip-xmls>
	<aip-xmls
xsi:type="java:model.content_data_access.AIPOPImpl.AipXml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
		<XML>src2.xml</XML>
		<location>c:/temp</location>
		<date>2004-01-20T06:24:33.597Z</date>
	</aip-xmls>
</aip-xMLContainer>

But when I try to unmarshal it I get following exception
ValidationException: element "aip-xmls" occurs more than once.
(XMLFieldDesciptor: aipXmls AS aip-xmls)
	at
org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:
802)
	at
org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:
918)
	at
org.apache.xerces.parsers.AbstractSAXParser.endElement(AbstractSAXParser
.java:559)
	at
org.apache.xerces.impl.XMLNamespaceBinder.endElement(XMLNamespaceBinder.
java:646)
	at
org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValida
tor.java:2978)
	at
org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.ja
va:918)


I am using following code to unmarshal it

Marshaller.marshal(container,writer);
Object object = Unmarshaller.unmarshal(AipXMLContainer.class,reader);


My Object is as following

---------------------------------------------------
package model.user_data_access;

/**
 * @author chopra_mz
 *
 */

import java.util.*;

import model.content_data_access.AIPOPImpl.AipXml;

public class AipXMLContainer {

	ArrayList xmls;
	public AipXMLContainer(){
		this(null);
	}
	
	public AipXMLContainer(Collection aipXmls){
		if(aipXmls==null)xmls = new ArrayList();
		else xmls = new ArrayList(aipXmls);
	}
	
	public void add(AipXml aipXml){
		if(aipXml!=null)xmls.add(aipXml);
	}
	
	public Collection getAipXmls(){
		return this.xmls;
	}
	public void setAipXmls(Collection aipXmls){
		if(aipXmls != null)
		this.xmls = new ArrayList(aipXmls);
	}
	
	public void clearList(){
		this.xmls.clear();
	}
}

---------------------------------------------------------------

/*
 * Created on 16/09/2003
 */
package model.content_data_access.AIPOPImpl;

import java.io.Serializable;
import java.util.*;
import java.lang.Integer;

/**
 * A wrapper class for holding an Oip XML file and its properties
 * 
 * @author chopra_mz
 *  
 */
public class AipXml implements Serializable{
	private Date date;
	private Calendar cal;
	private String location;
	private String xml;

	/**
	 * This constructor is must as this class has to
	 * be serialized
	 */
	public AipXml(){
	}
	
	/**
	 * creates an instance of OipXml to be used with 
	 * Object prevalenece 
	 * 
	 * @param cal  Calendar representing the Date Of Interest
	 * @param location location of the file on the server
	 * @param xml  contents of the Oip xml file
	 */
	public AipXml(Calendar cal,String location,String xml){
		this.cal = cal;
		this.date = cal.getTime();
		this.location = location;
		this.xml = xml;	
	}
	
	public AipXml(Integer date,Integer month,Integer year,String
location,String xml){
			
			cal = Calendar.getInstance();
			cal.set(Calendar.DAY_OF_MONTH, date.intValue());
			cal.set(Calendar.MONTH, month.intValue());
			cal.set(Calendar.YEAR, year.intValue());
			
			this.location = location;
			this.xml = xml;	
	}

	/**
	 * Normally instace of OipXml is created while reading 
	 * oipconfig.properties and xml string is passed as null
	 * After reading other properties like location teh xml file
	 * is read and the String representing xml content is set using
	 * this method
	 * @param doc String content of the xml file
	 */
	void setXML(String doc){
		this.xml=doc;
	}
	/**
	 * gets the text content of the XML
	 * @return
	 */
	public String getXML(){
		return this.xml;
	}
	/**
	 * Gets the physical location of the Xml file
	 * @return location
	 */
	public String getLocation(){
		return this.location;	
	}
	
	public void setDate(Date date){
		this.date=date;
		this.cal=getCalendar(date);
	}
	
	public Date getDate(){
		if(cal!=null)this.date=cal.getTime();
		return this.date;
	}
	/**
	 * Gets the Calendar object associated with the Date Of Interest

	 * of this XML
	 * @return calendar
	 */
	public Calendar getCalendar(){
		if(cal==null)cal = getCalendar(this.date);
		return cal;
	}
	
	
	private Calendar getCalendar(Date date){
		if(date==null)return null;	
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return cal;
	}
	
	public String toString (){
		return (""+getCalendar().get(Calendar.DAY_OF_MONTH)+
				":"+getCalendar().get(Calendar.MONTH)+
				":"+getCalendar().get(Calendar.YEAR)
				+"  "+location);
	}
}
------------------------------------------------------------

----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-dev

Reply via email to