zoukankan      html  css  js  c++  java
  • 有道单词本导出xml转换.

    有道单词本导出后生成的是xml, 不方便看, 于是需要解析一下.

    xml解析都忘了, 顺便学习一下.

    用到两个类 , 如下:

    第一个:就是死的那几步.

    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    
    import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
    
    import org.xml.sax.SAXException;
    /**
     * 有道单词本单词生成.
     * @author lvxingang
     */
    public class XmlParser {
    	public static void main(String[] args) {
    			// 初始化与解析
    			try {
    				SaxHandler handler = new SaxHandler();
    				SAXParserFactory saxparserfactory = SAXParserFactory.newInstance();
    				SAXParser saxparser = saxparserfactory.newSAXParser();
    				saxparser.parse(new File("youdao.xml"), handler);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    	}
    }
    

     第二个类.是DefaultHandler类.

    public class SaxHandler extends DefaultHandler {
    	// 当前元素中的数据
    		private String currentData;
    		int i = 0;
    		// 取得元素数据
    		public void characters(char[] ch, int start, int length)
    				throws SAXException {
    			currentData = new String(ch, start, length);
    		}
    		// 在解析元素开始时调用
    		public void startElement(String uri, String localName, String name,
    				Attributes attributes) throws SAXException {
    			if(name.equalsIgnoreCase("word")){
    				System.out.print("单词: ");
    			}else if(name.equalsIgnoreCase("trans")){
    				System.out.println("翻译:");
    			}else if(name.equalsIgnoreCase("phonetic")){
    				System.out.print("音标: ");
    			}else if(name.equalsIgnoreCase("item")){
    				System.out.println();
    				System.out.println("第"+i+"个单词.");
    				i++;
    			}
    		}
    		// 在解析元素结束时调用
    		public void endElement(String uri, String localName, String name)
    				throws SAXException {
    			if(name.equalsIgnoreCase("word")||name.equalsIgnoreCase("trans")||name.equalsIgnoreCase("phonetic"))
    			System.out.println(" " + this.currentData);
    		}
    }
    

     完成.

    效果对比如下:

    下一步再弄把它写到一个文本中, 应该很简单的. IO也忘了................啊............

  • 相关阅读:
    在实体属性上通过注解格式化日期
    @Validated和@Valid区别:Spring validation验证框架对入参实体进行嵌套验证必须在相应属性(字段)加上@Valid而不是@Validated
    两种根据关键字查询的方法SQL
    excel批量导入数据
    下载excel模板
    上传人员照片
    身份证校验类
    把字符串参数分割成数组 传入SQL foreach遍历查询
    使用Hibernate-Validator优雅的校验参数
    如何使用Graphics2D在一张图片上画线(包括箭头)
  • 原文地址:https://www.cnblogs.com/olvo/p/2569588.html
Copyright © 2011-2022 走看看