JAVA解析xml(SAX)
来源:互联网 发布:大数据商机 编辑:程序博客网 时间:2024/05/29 16:30
1.获取SAXParserFactory对象
SAXParserFactory factory= SAXParserFactory.newInstance();
2.获取SAXParser对象
SAXParser parser=factory.newSAXParser();
3.加载文件
Handler handler=new Handler();
parser.parse("books.xml", handler);4.创建解析类,继承DefaultHandler,通过重写方法实现解析xml功能
public class Handler extends DefaultHandler {private com.xbx.Book book;String value; public ArrayList<com.xbx.Book> list=new ArrayList<>();//解析开始节点@Overridepublic void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {// TODO Auto-generated method stubsuper.startElement(uri, localName, qName, attributes);if (qName.equals("book")) {book=new com.xbx.Book();int att_l=attributes.getLength();//已知属性名 获取属性值//System.out.println(attributes.getValue("id"));//不知道属性名获取属性值与属性名for (int i = 0; i < att_l; i++) {//获取属性名System.out.print("属性"+attributes.getQName(i));if (attributes.getQName(i).equals("id")) {book.setId(attributes.getQName(i));}//获取属性值System.out.println("--------值:"+attributes.getValue(i));}}if (!qName.equals("bookstore")) {if (!qName.equals("book")) {System.out.print(qName);}}}@Overridepublic void endElement(String uri, String localName, String qName) throws SAXException {// TODO Auto-generated method stubsuper.endElement(uri, localName, qName);if (qName.equals("book")) {list.add(book);book=null;}else if (qName.equals("id")) {book.setId(value);}else if (qName.equals("name")){book.setName(value);}else if (qName.equals("year")){book.setYear(value);}else if (qName.equals("price")){book.setPrice(value);}}//文件解析开始@Overridepublic void startDocument() throws SAXException {System.out.println("解析开始");// TODO Auto-generated method stubsuper.startDocument();}//文件解析结束@Overridepublic void endDocument() throws SAXException {System.out.println("解析结束");// TODO Auto-generated method stubsuper.endDocument();}//获取节点的值,将xml存入ch中,调用方法,获取属性所在的开始位置与长度,读取@Overridepublic void characters(char[] ch, int start, int length) throws SAXException {// TODO Auto-generated method stubsuper.characters(ch, start, length); value=new String(ch, start, length);if (!value.trim().equals("")) {System.out.println("-----"+value);}}}主函数的代码:
public class SaxTest {public static void main(String[] args) {//获取SAXParserFactory对象SAXParserFactory factory= SAXParserFactory.newInstance();try {//获取SAXParser对象SAXParser parser=factory.newSAXParser();Handler handler=new Handler();//加载文件parser.parse("books.xml", handler);for (int j = 0; j < handler.list.size(); j++) {Book book=handler.list.get(j);System.out.println(book.getName());//System.out.println(book.getId());}} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();}catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}5.通过创建对象保存解析的xml数据
建立Book类:
public class Book {private String id;private String year;private String price;private String name ;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getYear() {return year;}public void setYear(String year) {this.year = year;}public String getPrice() {return price;}public void setPrice(String price) {this.price = price;}}在Handler中创建对象并保存到List中
阅读全文
0 0
- xml解析(sax java)
- JAVA解析xml(SAX)
- java sax 解析 xml
- java SAX 解析XML
- Java Sax解析xml
- JAVA SAX解析xml
- java SAX解析XML
- Java Sax解析xml
- Java Sax 解析 xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java Sax解析xml
- Java sax解析xml
- Java Sax解析xml
- java sax解析xml
- 几种随机算法的实现原理
- servlet编程基础
- Android 点击桌面快捷方式和Notifycation跳转到Task栈顶Activity
- 【POJ】3259
- 大众创业、万众创新--记录申请个体工商户的流程
- JAVA解析xml(SAX)
- 单源最短路径之迪杰斯特拉算法
- Spring框架:AOP中切点采用aspectj
- js中Json对象与Json字符串互转(4种转换方式)
- 数据仓库基础
- Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)
- Python 文件操作(一)
- 库默尔定理学习小记
- 集群高可用之heartbeat