有道单词本导出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也忘了................啊............

原文地址:https://www.cnblogs.com/olvo/p/2569588.html