0

私はJavaでSAXAPIを使用してcsvをxmlに変換しています。次のような属性のない単純なxmlファイルを生成できます

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

しかし、idとquantityをitem要素の属性として設定する方法が見つかりません。

<item id=1500 quantity=4/>

SAXapiが提供しているように見えるのはすべてstartElementcharacterメソッドendElementです。(これらのメソッドにパラメーターがあることは知っていますがattribute、属性を設定することはまったくできないようです)。

4

1 に答える 1

0

ここには、属性の追加を含む適切なサンプル コードがいくつかあります。

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 = {"Tim@Home","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();
于 2009-12-21T03:21:02.777 に答える