📄 saxparser1_old.java
字号:
package xmlsax;import java.util.*;import java.io.*;import java.io.IOException;import org.xml.sax.*;import org.xml.sax.helpers.*;import org.apache.xerces.parsers.SAXParser;public class SaxParser1 extends DefaultHandler { private java.util.Stack tagStack=new java.util.Stack(); private String resultXML=""; private String indent=""; private static final java.lang.String NEWLINE=System.getProperty("line.separator"); private PrintWriter printFile=null; String[] res =new String[10]; int len = 0,sel; String sbname,tag; public static void main(String[] argv) { if (argv.length != 1) { System.out.println("Usage: java SaxParser1 [URI]"); System.exit(0); } String uri = argv[0]; try { XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); SaxParser1 SaxParser1Instance = new SaxParser1(); parser.setContentHandler(SaxParser1Instance); parser.parse(uri); } catch(IOException ioe) { ioe.printStackTrace(); } catch(SAXException saxe) { saxe.printStackTrace(); } } public String[] sTOc(String temp){ String[] res =new String[10]; StringTokenizer st = new StringTokenizer(temp); len = 0; while(st.hasMoreTokens()) res[len++] = st.nextToken() + " " + sbname; return res; } private int selectSb(String[] sb) { int i; String s = ""; String ask = "\n确认请按回车,或选择其它"; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请在下列" + sbname + "类型中选择一种\n"); for(i=0;i<len;i++) System.out.println(" " + i +"."+ sb[i] + "\n"); i=0; System.out.println("请输入0 -- " + (len-1) + "(直接回车,默认选择0):"); try { s = in.readLine(); Integer tt=new java.lang.Integer(0); while ( s.length() != 0) { i=tt.valueOf(s).intValue(); if(i<len && i>=0) System.out.println("您选择的" + sbname + "是: " + sb[i] + "\n" + ask + sbname); else System.out.println("错误的选择!!"); s = in.readLine(); } } catch (IOException e) { e.printStackTrace(); } return i; } private String locateValue(String tagName) { return sbname; } /**@todo: Implement this characters method*/ public void characters(char[] ch, int start, int length) throws SAXException { String value = new String(ch, start, length); //throw new java.lang.UnsupportedOperationException("Method characters() not yet implemented."); } /**@todo: Implement this endDocument method*/ public void endDocument() throws SAXException { try { printFile=new PrintWriter(new FileWriter("resle.txt")); printFile.print(resultXML); printFile.close(); } catch(IOException e) { System.out.println("打开 resle.txt 时出错:"+e); } System.out.println(resultXML); } /**@todo: Implement this endElement method*/ public void endElement(String uri, String localName, String qName) throws SAXException { if(localName.equals("trnDef")) { } else if(localName.equals("Name")) { String tagName=(String)tagStack.pop(); indent=indent.substring(0,indent.length()-4);// if (!(indent.length() == 8 && !res[sel].equals(tag))) resultXML=resultXML+indent+"</"+tagName+">"+NEWLINE; } } /**@todo: Implement this startDocument method*/ public void startDocument() throws SAXException { } /**@todo: Implement this startElement method*/ public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if(localName.equals("trnDef")) { } else if(localName.equals("Name")) { String tagName=attributes.getValue(0); if (indent.length() == 4){ String tagValue=attributes.getValue(1); sbname = tagName; res=sTOc(tagValue); sel=selectSb(res); } tagStack.push(tagName); tag = tagName + " " + sbname; System.out.println(res[sel]+"%"+tag+"%");// if (!(indent.length() == 8 && !res[sel].equals(tag))) resultXML=resultXML+indent+"<"+tagName+">"+NEWLINE; indent+=" "; } else if(localName.equals("Values")) { String tagName=attributes.getValue(0); String tagValue=locateValue(tagName); if(!tagValue.equals("")) { resultXML=resultXML+indent+"<"+tagName+">"+tagValue+"</"+tagName+">"+NEWLINE; } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -