Castor 0.9.5.3 and below used the SAX ParserAdapter to wrap a ContentHandler.

If you use 0.9.5.4 or above it uses the ContentHandler directly.

--Keith




Chandrasekharan, Sarita wrote:
Hi,

For the code below has anyone tried to replace the DocumentHandler
(which has been deprecated) with ContentHandler? I get a SAX.Parser
Error as mentioned below.



            DocumentBuilderFactory mDocFact =
DocumentBuilderFactory.newInstance();

            DocumentBuilder mDocBuilder = mDocFact.newDocumentBuilder();

            Document mDocument = mDocBuilder.newDocument();



            // Load the Mapping XML

            Mapping mMap = new Mapping();

            mMap.loadMapping("ChartDataMapping.xml");



            // Create output format

            OutputFormat format = new OutputFormat(mDocument,"UTF-8",
true);



// Define the names of the XML elements to put

            String[] mCData = {"data"};

            format.setCDataElements(mCData);

format.setNonEscapingElements(mCData);



         // Create the serializer

            Writer mWriter = new StringWriter();

            XMLSerializer serializer = new XMLSerializer(mWriter,
format);



ContentHandler handler = serializer.asContentHandler();



         // Create the marshaller

            Marshaller mMarshaller = new Marshaller(handler);

            mMarshaller.setMapping(mMap);

            mMarshaller.setSuppressXSIType(true);

            mMarshaller.marshal(mChartDataInfo);



When I use ContentHandler, I get the following error:



#endElement: class

#endElement: mapping

org.xml.sax.SAXException: System property org.xml.sax.parser not
specified

        at org.xml.sax.helpers.ParserAdapter.<init>(Unknown Source)

        at org.exolab.castor.xml.Marshaller.<init>(Marshaller.java:334)

        at ChartDataXML.main(ChartDataXML.java:92)



I have read that it can be done by setting JAVA_OPTS in the system
properties. But, is there a way to fix it through code?



Thanks,

Sarita





-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, January 04, 2005 10:43 AM
To: Chandrasekharan, Sarita
Cc: [email protected]
Subject: RE: [castor-user] Castor - CDATA tags in Mapping XML




Hi Sarita,



You can try this out....



// Get mapping
Mapping mapping = new Mapping();
// The file containing the mapping here ex. test
mapping.loadMapping(test);
// Create output format
OutputFormat format = new OutputFormat(Method.XML, "UTF-8",
true);
// Define the names of the XML elements to put


String[] cdata = {"fragment"};
format.setCDataElements(cdata);
format.setNonEscapingElements(cdata);


// Create the serializer
XMLSerializer serializer = new XMLSerializer(writer,
format);
// Create the document handler
DocumentHandler handler = serializer.asDocumentHandler();
// Create the marshaller
Marshaller marshaller = new Marshaller(handler);
marshaller.setMapping(mapping);
// Do it!
marshaller.marshal(object); // The object you wanna marshal


Here you need to modify the mapping file also it would be like...

<field name="cData">

      <bind-xml name="fragment" node="element"
location="chart/chart_html_fragments"/>

    </field>

<field name="appearanceName" >

      <bind-xml name="appearance_name" node="attribute"
location="chart/chart_html_fragments/fragment"/>

    </field>

    <field name="isCurrentlySelected">

      <bind-xml name="is_currently_selected" node="attribute"
location="chart/chart_html_fragments/fragment"/>

    </field>

    <field name="linkName">

      <bind-xml name="link_name" node="attribute"
location="chart/chart_html_fragments/fragment"/>

    </field>

Thanks,

Snehal



-----Original Message-----
From: Chandrasekharan, Sarita
[mailto:[EMAIL PROTECTED] Sent: Tuesday, January 04, 2005 8:13 PM
To: [email protected]
Subject: [castor-user] Castor - CDATA tags in Mapping XML


        Hi,

        I have a class which has four attributes in it as follows.  I
want the last attribute cData which is a string to be embedded within
CDATA tags . How do I do this in the Mapping XML which the Marshall
process uses? I have sent the java class which is the object, the class
which sets the value for the object, the mapping XML and the output
expected. In my example I get the cData attribute wrapped around element
CDATA, but I want it the actual CDATA tags around the string . Any help
is appreciated.

        public class ChartDataInfo

        {

            //attributes

            protected String appearanceName;

            protected String linkName;

            protected boolean isCurrentlySelected;

            protected String cData;



             /** Creates a new instance of ChartDataInfo */

            public ChartDataInfo() {

            }

            public String getAppearanceName() { return appearanceName; }

            public String getLinkName() { return linkName; }

            public boolean getIsCurrentlySelected() { return
isCurrentlySelected; }

            public String getCData() { return cData; }

            public void setAppearanceName(String pValue) {
appearanceName = pValue; }

            public void setLinkName(String pValue) { linkName = pValue;
}

            public void setIsCurrentlySelected(boolean pValue) {
isCurrentlySelected = pValue; }

            public void setCData(String pValue) { cData = pValue; }



        }



                CLASS which sets the value for ChartDataInfo class

        public class ChartDataXML

        {

            public static void main(String[] argv) {



                // Create a new MetaDataInfo



                ChartDataInfo mChartDataInfo = new ChartDataInfo();

                mChartDataInfo.setAppearanceName("TFLINBAR");

                mChartDataInfo.setLinkName("Line-BAR");

                mChartDataInfo.setIsCurrentlySelected(true);

                mChartDataInfo.setCData("charthtml");



                             // write it out as XML

                        String encoding = "ISO-8859-1";



                    String mMapping = "ChartDataMapping.xml";



                        StringBuffer mStrBuf =
MarshalBean.generateBOXML(mMapping, mChartDataInfo);



System.out.println(mStrBuf);

            }

        }



        Mapping FILE

<!DOCTYPE databases PUBLIC

          "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"

          "http://castor.exolab.org/mapping.dtd";>

        <mapping>

          <description>ChartData Mapping</description>

          <class name="ChartDataInfo">

            <map-to xml="charts"/>

            <field name="appearanceName" >

              <bind-xml name="appearance_name" node="attribute"
location="chart/chart_html_fragments/fragment"/>

            </field>

            <field name="isCurrentlySelected">

              <bind-xml name="is_currently_selected" node="attribute"
location="chart/chart_html_fragments/fragment"/>

            </field>

            <field name="linkName">

              <bind-xml name="link_name" node="attribute"
location="chart/chart_html_fragments/fragment"/>

            </field>

            <field name="cData">

              <bind-xml name="CData" node="element"
location="chart/chart_html_fragments/fragment"/>

            </field>

          </class>

        </mapping>



                Expected output

<?xml version="1.0" encoding="UTF-8" ?>

        -
<file:///C:\Documents%20and%20Settings\a266557\Desktop\abc.xml>
<charts>

        -
<file:///C:\Documents%20and%20Settings\a266557\Desktop\abc.xml>  <chart>

        -
<file:///C:\Documents%20and%20Settings\a266557\Desktop\abc.xml>
<chart_html_fragments>

        -
<file:///C:\Documents%20and%20Settings\a266557\Desktop\abc.xml>
<fragment appearance_name="TFLINBAR" is_currently_selected="true"
link_name="Line-BAR">

         <![CDATA[charthtml]]>

          </fragment>

         </chart_html_fragments>

          </chart>

         </charts>



        Thanks,

        Sarita



MASTEK
"Making a valuable difference"
Mastek in NASSCOM's 'India Top 20' Software Service Exporters List.
In the US, we're called MAJESCO

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Opinions expressed in this e-mail are those of the individual and not
that of Mastek Limited, unless specifically indicated to that effect.
Mastek Limited does not accept any responsibility or liability for it.
This e-mail and attachments (if any) transmitted with it are
confidential and/or privileged and solely for the use of the intended
person or entity to which it is addressed. Any review, re-transmission,
dissemination or other use of or taking of any action in reliance upon
this information by persons or entities other than the intended
recipient is prohibited. This e-mail and its attachments have been
scanned for the presence of computer viruses. It is the responsibility
of the recipient to run the virus check on e-mails and attachments
before opening them. If you have received this e-mail in error, kindly
delete this e-mail from all computers.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~




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

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



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

Reply via email to