You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by twathelet <TW...@europarl.eu.int> on 2007/12/10 12:29:16 UTC

JAKARTA COMMONS DIGESTER RULES XML PROBLEM

High I'm using DIGESTER to parse an xml doc but it seems that I don't
understang somethig
My xml file:

<!-- message JMS -->
<message>
	<!-- enveloppe des informations propre  la FDR -->
	<fdr>
		<!-- Numro de FDR (ex: 650451) -->
		<number>690504</number>
		<docType>
			<!-- Mnmonique du type de document (ex: AM, RR, ...) -->
			<docTypeMnemo>AM</docTypeMnemo>
		</docType>
	</fdr>
	<version>
		<!-- Indique l'outil utilis pour produire le doc. -->
		<jobProductionTool>SEIAMD</jobProductionTool>
		<!-- Donne toutes les langues cibles de la traduction ou de la mise en
forme -->
		<languagesCouples>
			<languageCouple>
				<targetLanguage>EN</targetLanguage>
			</languageCouple>
			<languageCouple>
				<targetLanguage>FR</targetLanguage>
			</languageCouple>
			<languageCouple>
				<targetLanguage>DE</targetLanguage>
			</languageCouple>
		</languagesCouples>
	</version>
</message>

***************************************************************

My xml rules:

<?xml version="1.0" encoding="UTF-8"?>
<digester-rules>
	<pattern value="message">
		<object-create-rule
			classname="europarl.trad.sild.movearch.model.FdrFile" />
		<call-method-rule pattern="fdr/number" methodname="setFdrNumber"
			paramcount="0" />
		<call-method-rule pattern="fdr/docType/docTypeMnemo"
			methodname="setDocType" paramcount="0" />
		<call-method-rule pattern="version/jobProductionTool"
			methodname="setProductionTool" paramcount="0" />
		<pattern
			value="message/version/languagesCouples/languageCouple">
			<object-create-rule
				classname="europarl.trad.sild.movearch.model.Lang" />
			<call-method-rule pattern="targetLanguage"
				methodname="setCode" paramnumber="0" />
			<call-method-rule pattern="targetLanguage"
				methodname="setLabel" paramnumber="0" />
			<set-next-rule methodename="addLang" />
		</pattern>
	</pattern>
</digester-rules>

********************************************************************

My classes are:

/**
 * 
 */
package europarl.trad.sild.movearch.model;

import java.util.Vector;

/**
 * @author twathelet
 */
public class FdrFile {

    private String fdrNumber;

    private String docType;

    private String productionTool;

    private Vector coupleLang;

    /**
     * @return the coupleLang
     */
    public Vector getCoupleLang() {
        return coupleLang;
    }

    /**
     * @param coupleLang
     *            the coupleLang to set
     */
    public void setCoupleLang(Vector coupleLang) {
        this.coupleLang = coupleLang;
    }

    /**
     * @return the fdrNumber
     */
    public String getFdrNumber() {
        return fdrNumber;
    }

    /**
     * @param fdrNumber
     *            the fdrNumber to set
     */
    public void setFdrNumber(String fdrNumber) {
        this.fdrNumber = fdrNumber;
    }

    /**
     * @return the docType
     */
    public String getDocType() {
        return docType;
    }

    /**
     * @param docType
     *            the docType to set
     */
    public void setDocType(String docType) {
        this.docType = docType;
    }

    /**
     * @return the productionTool
     */
    public String getProductionTool() {
        return productionTool;
    }

    /**
     * @param productionTool
     *            the productionTool to set
     */
    public void setProductionTool(String productionTool) {
        this.productionTool = productionTool;
    }

    public void addLang(Lang lang) {
        this.coupleLang.addElement(lang);
    }

    /**
     * 
     */
    public FdrFile() {
        this.coupleLang = new Vector();
    }

}

****************************************************

/**
 * 
 */
package europarl.trad.sild.movearch.model;

/**
 * @author twathelet
 */
public class Lang {
    private String code;

    private String label;

    /**
     * @return the code
     */
    public String getCode() {
        return code;
    }

    /**
     * @param code
     *            the code to set
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * @return the label
     */
    public String getLabel() {
        return label;
    }

    /**
     * @param label
     *            the label to set
     */
    public void setLabel(String label) {
        this.label = label;
    }

    /**
     * 
     */
    public Lang() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @param code
     * @param label
     */
    public Lang(String code, String label) {
        super();
        this.code = code;
        this.label = label;
    }

    /**
     * @param code
     */
    public Lang(String code) {
        super();
        this.code = code;
    }

    
}


**********************************************************

/**
 * 
 */
package europarl.trad.sild.movearch;

import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import europarl.trad.sild.movearch.model.FdrFile;

/**
 * @author twathelet
 */
public class Executable {

    /**
     * @param args
     */
    public static void main(String[] args) {
        InputStream message =
ClassLoader.getSystemClassLoader().getResourceAsStream(args[0]);
        InputSource configFile = new
InputSource(ClassLoader.getSystemClassLoader().getResourceAsStream(args[1]));
        Digester d = DigesterLoader.createDigester(configFile);
        FdrFile fdrFile = new FdrFile();
        try {
            fdrFile = (FdrFile) d.parse(message);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }
        System.out.println(fdrFile.getFdrNumber());
        System.out.println(fdrFile.getDocType());
        System.out.println(fdrFile.getProductionTool());
        System.out.println(fdrFile.getCoupleLang().size());
    }

}

********************************************************

And when I execute the code I recive that
690504
AM
SEIAMD
0

my question his why the number of language=0???
Thanks



-- 
View this message in context: http://www.nabble.com/Re%3A-JAKARTA-COMMONS-DIGESTER-RULES-XML-PROBLEM-tp13500277p14251258.html
Sent from the Commons - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org