- 浏览: 229213 次
- 来自: 南京
文章分类
最新评论
-
luckrains:
...
SpringData JPA详解 -
雪儿的天空1107:
解释得很全面
SpringData JPA详解 -
RAPIER512:
[color=blue][/color][size=large ...
SpringData JPA详解 -
syw2452:
LZ这篇文章解开了我多年的心结
Struts MPV(Multi Page Validation)的使用方法 -
程俊2009:
为什么提示没有权限呢
jsp上用js实现选择一个文件夹,并显示路径名
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.apache.commons.beanutils.BeanUtils;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ParserTest extends DefaultHandler {
StringBuffer tdBuffer= new StringBuffer();
boolean tr_in_stack = false;
static String tag_tr = "tr";
static String tag_td = "td";
TrData trData;
Stack<TrData> trDatas = new Stack<TrData>();
Stack<Object> objects = new Stack<Object>();
Stack<String> tagNames = new Stack<String>();
public void startDocument() throws SAXException {
System.out.println("----- document begin -----");
}
public void endDocument() throws SAXException {
System.out.println("----- document end -----");
}
public void characters(char ch[], int start, int length)
throws SAXException {
// this.objects.isEmpty() ||
if (this.tagNames.isEmpty())
return;
if (this.tagNames.peek().equals(tag_td)) {
String value = new String(ch, start, length);
if (value == null)
return;
value = value.trim();
if ("".equals(value))
return;
tdBuffer.append(value);
}
}
/* add the name of the attribute belonged any object */
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
qName = qName.toLowerCase();
if (!qName.equals(tag_tr) && !qName.equals(tag_td))
return;
if (qName.equals(tag_tr)){
if(tr_in_stack)
this.tagNames.clear();
else
this.trData = new TrData();
tr_in_stack = true;
}
this.tagNames.add(qName);
}
/* remove the name of the attribute belonged any object */
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (tagNames.isEmpty()&&!qName.equals("html"))
return;
qName = qName.toLowerCase();
if (qName.equals(tag_td)){
this.tagNames.pop();
String value = this.tdBuffer.toString();
if(!"".equals(value)||value!=null)
this.trData.addTd(value);
this.tdBuffer = new StringBuffer();
}
if (qName.equals(tag_tr)) {
this.tagNames.clear();
tr_in_stack = false;
this.trDatas.add(this.trData);
}
if(qName.equals("html")){
int ii=0;
List<String> strs = new ArrayList<String>();
String s=null;
while(ii<=trDatas.lastIndexOf(trDatas.lastElement())){
if(!trDatas.elementAt(ii).getTds().get(0).isEmpty()){
s=trDatas.elementAt(ii).getTds().toString();
s=s.substring(1, s.length()-1);
Pattern p = Pattern.compile(" ");
Matcher m = p.matcher(s);
s=m.replaceAll("");
strs.add(s);
}
ii++;
}
for(String str:strs){
System.out.println(strs.indexOf(str)+" "+str);
System.out.println();
}
}
}
protected void setAttributes(Object target, Attributes atts)
throws IllegalAccessException, InvocationTargetException {
/* set the attribute */
for (int i = 0; i < atts.getLength(); i++) {
BeanUtils.setProperty(target, atts.getQName(i), atts.getValue(i));
}
}
private boolean isValid(String value) {
if (value.startsWith("<img") || value.startsWith("<table"))
return false;
return true;
}
public static class TrData {
private List<String> tds = new ArrayList<String>();
public void addTd(String tdMsg) {
tds.add(tdMsg);
}
public List<String> getTds() {
return tds;
}
}
public static void main(String args[]) {
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
InputStream inputStream = null;
Reader reader = null;
try {
/* inputStream of xml */
inputStream = new FileInputStream(
"D:/1.xml");
/* specify the CharSet when reading the Stream */
reader = new InputStreamReader(inputStream, "UTF-8");
/*
* construct the InputSource with reader, which is the source of
* saxParser
*/
InputSource source = new InputSource(reader);
/* create parser with SaxFactory */
SAXParser parser = saxFactory.newSAXParser();
/* the most importence component used to parse the xml */
ParserTest handler = new ParserTest();
/* parse the xml source with studentHandler */
parser.parse(source, handler);
} catch (Exception e) {
e.printStackTrace();
} finally {
/* release the resource */
try {
if (reader != null)
reader.close();
if (inputStream != null)
inputStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
发表评论
-
[转]成为JavaGC专家Part I — 深入浅出Java垃圾回收机制
2015-11-27 11:54 848原文地址:http://www.importnew.com ... -
配置Jconsole监控Jboss性能
2015-10-26 09:20 1677在standalone.bat中添加如下配置 ----- ... -
[转]serialVersionUID的作用
2015-05-18 16:12 1044转自:http://www.strutshome ... -
[转]Java序列化与反序列化
2015-05-18 15:24 762Java序列化与反序列化 ... -
守护线程和Shutdown Hooks
2014-09-04 17:32 2277线程分为两种:守护线程和用户线程(也叫非守护线程)。 ... -
SFGFSDH
2013-07-29 10:28 0http://hi.baidu.com/nnffnn/it ... -
asdfasdf
2011-01-06 20:17 0asdfasdfasdf -
java源码调试的两个问题及解决方法
2010-11-11 16:40 1800今天想调试java源码,遇到两个问题,后来都解决了,好 ... -
在eclipse中利用工具对class文件进行反编译(转)
2010-11-11 16:30 2374Java是开源的,是免费的 ... -
一个使用io读文件并使用正则表达式匹配信息的小例子
2010-08-24 10:38 1210import java.io.BufferedReader; ... -
使用Jtidy将Html文件转换为xml文件的小例子
2010-07-27 10:57 2440import java.io.File; import ja ...
相关推荐
一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例
Sax解析xml文件详细例子,解析复杂节点的xml,把内容显示到view中,例子简单完整,易用
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
XML解析之SAX解析DEMO,之前在播控上有介绍,但是代码排版太乱了,这个就是Android4.0网络编程中的SAX解析例子。
简单的小例子,在安卓上如何用sax解析简单的3层xml
android sax解析xml 完整的例子及说明,解压后就可以运行,相信你的选择
SAX解析,完整简单的运用,要扩展也可参考
一个简单的使用sax解析本地xml的小例子程序,对刚接触sax的童鞋们可能有用。
XML通过SAX解析为JSON格式的文档 例子中的类稍微修改可以做做到公用
学习android的资料很多,这是学习一些视频之后进行的总结,现在共享出来。希望对大家有帮助。有文档中有附件,是例子!!!!!!!!!!!!!!
pull,sax,dom,解析XML的例子:各一个
webservice远程调用,返回String数据并生成xml文件到本地工程,在通过SAX解析器把数据解析出来。这是webservice应用的一个简单的例子。根据该例子的思想,可以实现很多功能了。例如把client工程的sayHello方法改为...
直接导入MyEclipse里面即可,直接导入MyEclipse里面即可
1、java SAX方式的XML解析 和 Myeclipse工程源码 2、java 正则表达式详解和常用例子
day02_xml *demo01.App1\App2\App3 使用jaxp开发包中的SAX方式解析xml文档,该方式只能读取文档 *demo4j01.App dom4j CURD XML *domo4j.ex 对dom4j 的封装例子
现在流行的几种解析xml的方法,都做了相应的创建和解析XML的demo,虽然有点简单,但是和新手入门
java解析xml文件,已连接数据库为例,我用的是oracle数据库 三种方式的例子都有 dom sax dom4j 很全的哦。。。 本人亲自写的哦
Java 解析XML性能分析Demo。包含了DOM解析,SAX解析, JDOM解析,DOM4J解析,JAXB解析例子。
java解析xml的四种方法的比较,还有四种方法所用到的jar包 附带程序例子 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
上述方法应该没问题,但要解析的XML文件可能有点问题,可以试着修改,其中包含解析XML需要的jar包。