设为首页 加入收藏

TOP

JSON XML IO数据操作
2014-11-24 03:11:39 来源: 作者: 【 】 浏览:1
Tags:JSON XML 数据 操作

一、XML解析


通过继承org.xml.sax.helpers.DefaultHandler类,覆写characters(),startDocument(),startElement(),endElement()方法实现读取


characters() --------读取结点中的字段值


startDocument()------------进行读取的初始化


startElement()-------------为每次读取初始化


endElement()------------实现读取功能


以下是实现解析功能的源代码:


package org.hjw.service;


import java.util.ArrayList;
import java.util.List;


import org.hjw.model.Product;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;


public class XML2Product extends DefaultHandler {
private Product product;
private List products;
StringBuffer buffer = new StringBuffer();


public List getProducts() {
return products;
}


@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
buffer.append(ch, start, length);
super.characters(ch, start, length);
}


@Override
public void startDocument() throws SAXException {
products = new ArrayList();
}


@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (localName.equals("product")) {
product = new Product();
}
super.startElement(uri, localName, qName, attributes);
}


@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (localName.equals("product")) {
products.add(product);
} else if (localName.equals("id")) {
product.setId(Integer.parseInt(buffer.toString().trim()));
buffer.setLength(0);
} else if (localName.equals("name")) {
product.setName(buffer.toString().trim());
buffer.setLength(0);
} else if (localName.equals("price")) {
product.setPrice(Float.parseFloat(buffer.toString().trim()));
buffer.setLength(0);
}
super.endElement(uri, localName, qName);
}


}


然后只需在主函数中:


打开输入流,通过工具类分析xml文件即可获得一个ArrayList类型的集合,然后实现解析功能。


JSON XML IO数据操作


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android数据传输省电方法 下一篇基于Tiny210v2编译OpenWrt

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ 语言社区-CSDN社 (2025-12-24 17:48:24)
·CSDN问答专区社区-CS (2025-12-24 17:48:22)
·C++中`a = b = c`与` (2025-12-24 17:48:19)
·C语言结构体怎么直接 (2025-12-24 17:19:44)
·为什么指针作为c语言 (2025-12-24 17:19:41)