import java.io.*; import javax.xml.parsers.*; import org.xml.sax.*; import org.xml.sax.helpers.*; class SaxTrans1 { public static void main(String args[]) throws Exception { //saxを準備する SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); //ハンドラを作成する SampleHandler3J sh = new SampleHandler3J(); //文書を読み込む sp.parse(new FileInputStream("h4_0107.xml"), sh); } } //ハンドラクラス class SampleHandler3J extends DefaultHandler { //文字列を用意する StringBuffer sb = new StringBuffer(); boolean isPrint = false; //文書の開始 public void startDocument() { sb.append (""); sb.append("<歴史事象>"); } //文書の終了 public void endDocument() { sb.append(""); //文字列を書き出す try{ PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter("result.xml"))); pw.println(sb); pw.close(); }catch(Exception e){} } //要素の開始 public void startElement(String namespaceURI, String localName, String qName, Attributes attrs) { if(qName.equals("事象")){ sb.append("<" + qName + ">"); isPrint = true; } } //要素の終了 public void endElement(String namespaceURI, String localName, String qName) { if(qName.equals("事象")){ sb.append(""); isPrint = false; } } //文字データ public void characters(char[] ch, int start,int length) { String str = new String(ch, start, length); if(str.trim().length() != 0 && isPrint == true){ sb.append(str); } } }