Hi, It would be appreciated if you could follow these conventions: (1) Please do not use all-capitals for an email subject. IT IS ANNOYING AND HARD TO READ. (2) When using the commons list, put the component name at the start of the subject line, eg [digester] ... because this email list is shared by many components. (3) Please try to choose a better subject for emails. About 50% of all emails about digester could be described by this subject (the others can be described as "rules api problem"). This subject is therefore no use to anyone searching the archives.
I think you've just got a simple typing error. There is no "paramnumber" attribute on call-method-rule. But using paramcount=0 should work (as you do earlier in the file). This also looks like a spelling mistake (well, in English anyway..): <set-next-rule methodename="addLang" /> Everything else looks ok to me.. Regards, Simon ---- twathelet <[EMAIL PROTECTED]> schrieb: > > 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: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]