2009-12-21 3 views
0

J'utilise SAX api en java pour convertir csv en xml. Je peux générer un simple fichier XML sans attribut commeavoir des problèmes pour générer un attribut xml avec java sax

<item> 
<item_id>1500</item_id> 
<item_quantity>4</item_quantity> 
</item> 

mais je ne trouve pas le moyen de définir id et de la quantité comme attribut à l'élément de l'élément, comme

<item id=1500 quantity=4/> 

Tous api SAX semble offrir est startElement, character et endElement. (Je sais qu'il y a le paramètre attribute dans ces méthodes mais je ne peux jamais sembler définir d'attribut du tout).

+4

Il existe un paramètre d'attribut. Vous ne pouvez pas sembler l'utiliser pour définir des attributs. Ma conclusion: Vous utilisez ce paramètre incorrect. Publiez un exemple de la façon dont vous essayez de définir les attributs, et nous serons peut-être en mesure de le réparer. –

Répondre

0

Il existe un exemple de code décent here qui inclut l'ajout d'attributs.

import java.io.*; 
// Xerces 1 or 2 additional classes. 
import org.apache.xml.serialize.*; 
import org.xml.sax.*; 
import org.xml.sax.helpers.*; 
[...] 
FileOutputStream fos = new FileOutputStream(filename); 
// XERCES 1 or 2 additionnal classes. 
OutputFormat of = new OutputFormat("XML","ISO-8859-1",true); 
of.setIndent(1); 
of.setIndenting(true); 
of.setDoctype(null,"users.dtd"); 
XMLSerializer serializer = new XMLSerializer(fos,of); 
// SAX2.0 ContentHandler. 
ContentHandler hd = serializer.asContentHandler(); 
hd.startDocument(); 
// Processing instruction sample. 
//hd.processingInstruction("xml-stylesheet","type=\"text/xsl\" href=\"users.xsl\""); 
// USER attributes. 
AttributesImpl atts = new AttributesImpl(); 
// USERS tag. 
hd.startElement("","","USERS",atts); 
// USER tags. 
String[] id = {"PWD122","MX787","A4Q45"}; 
String[] type = {"customer","manager","employee"}; 
String[] desc = {"[email protected]","Jack&Moud","John D'oé"}; 
for (int i=0;i<id.length;i++) 
{ 
    atts.clear(); 
    atts.addAttribute("","","ID","CDATA",id[i]); 
    atts.addAttribute("","","TYPE","CDATA",type[i]); 
    hd.startElement("","","USER",atts); 
    hd.characters(desc[i].toCharArray(),0,desc[i].length()); 
    hd.endElement("","","USER"); 
} 
hd.endElement("","","USERS"); 
hd.endDocument(); 
fos.close(); 
Questions connexes