- 浏览: 231352 次
- 来自: 南京
文章分类
最新评论
-
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 886原文地址:http://www.importnew.com ... -
配置Jconsole监控Jboss性能
2015-10-26 09:20 1754在standalone.bat中添加如下配置 ----- ... -
[转]serialVersionUID的作用
2015-05-18 16:12 1078转自:http://www.strutshome ... -
[转]Java序列化与反序列化
2015-05-18 15:24 790Java序列化与反序列化 ... -
守护线程和Shutdown Hooks
2014-09-04 17:32 2308线程分为两种:守护线程和用户线程(也叫非守护线程)。 ... -
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 1833今天想调试java源码,遇到两个问题,后来都解决了,好 ... -
在eclipse中利用工具对class文件进行反编译(转)
2010-11-11 16:30 2418Java是开源的,是免费的 ... -
一个使用io读文件并使用正则表达式匹配信息的小例子
2010-08-24 10:38 1237import java.io.BufferedReader; ... -
使用Jtidy将Html文件转换为xml文件的小例子
2010-07-27 10:57 2467import java.io.File; import ja ...
相关推荐
一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例
下面是一个SAX解析XML的示例(有点长,因为详细注解了SAX事件处理的所有方法),SAX API中主要有四种处理事件的接口,它们分别是ContentHandler,DTDHandler, EntityResolver 和 ErrorHandler 。下面的例子可能...
以下是一个简单的SAX解析超大XML文件的Java示例代码: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers....
### 使用SAX解析XML文件详解 ...本总结详细介绍了如何使用SAX解析XML文件的基本流程及关键点,同时提供了一个简单的示例代码,有助于理解整个解析过程。希望本文能对学习和使用SAX解析XML文件有所帮助。
以下是使用SAX解析XML的基本步骤: 1. 创建一个实现DefaultHandler或ContentHandler接口的类,重写其中的方法,如startElement()、endElement()和characters(),用于处理XML文档的结构和数据。 2. 实例化SAX解析器...
下面是一个简单的SAX解析XML文档的Java代码示例: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SAXXmlDemo extends ...
以下是一个简单的SAX解析XML的例子: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxExample extends DefaultHandler {...
以下是一个简单的SAX解析XML的步骤: 1. 创建`SAXParserFactory`实例,并配置解析器: ```java SAXParserFactory factory = SAXParserFactory.newInstance(); ``` 2. 使用工厂创建`SAXParser`对象: ```java ...
以下是一个简单的SAX解析示例: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxExample extends DefaultHandler { @...
以下是一个简单的SAX解析XML文件的Android实例源码: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxExample extends ...
以下是一个简单的SAX解析XML的Android代码实例: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxExample extends ...
Java SAX方式解析XML文档是一种高效的处理大型XML文件的方法,它基于事件驱动模型,不将整个XML文档加载到内存中,而是逐个处理XML元素。这种方式非常适合处理大文件,因为它节省了内存,但需要编写更多的代码来处理...
本篇文章将详细探讨如何使用SAX解析XML中的特定循环组内容。 首先,了解SAX解析的基本原理。SAX解析器在读取XML文件时,会触发一系列事件,如开始文档、开始元素、字符数据、结束元素等。开发者通过实现SAX解析器的...
这个例子展示了如何使用SAX解析XML,并利用Apache POI将数据写入Excel。实际项目中,你可能需要根据XML文档的具体结构和需求进行适当的调整。同时,为了优化性能,可以在处理XML事件时,避免不必要的数据复制和内存...
- SAX解析器:Simple API for XML,事件驱动,逐行读取,占用内存小,适合大文件。 - StAX(Streaming API for XML):流式解析,介于DOM和SAX之间,允许向前移动的迭代,适合处理大文件。 3. 解析XML文件的Java...
webservice远程调用,返回String数据并生成xml文件到本地工程,在通过SAX解析器把数据解析出来。这是webservice应用的一个简单的例子。根据该例子的思想,可以实现很多功能了。例如把client工程的sayHello方法改为...
要使用SAX解析XML,首先需要创建一个实现了`ContentHandler`接口的类,然后在回调方法中处理XML数据。以下是一个简单的例子: ```java import org.xml.sax.Attributes; import org.xml.sax.SAXException; import ...
给定的代码示例是一个使用SAX解析XML文件的Java程序。下面我们将分步解析这个过程: 1. **导入必要的包**:首先,我们需要导入SAX解析所需的类库,包括`javax.xml.parsers.*`、`org.xml.sax.*`、`org.xml.sax....
描述中提到的“详细代码展示例子”,意味着这个压缩包可能包含了一个或者多个源代码文件,展示了如何在实际编程中应用SAX解析XML文档的步骤。这些代码通常会包括以下几个关键部分: 1. **事件处理器类**:继承自`...
在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...