问题出现在下面这句中:
xmlReader.parse(new File(filename),new SAXCounter());
把它改成:
xmlReader.parse(new File(filename),this);
你的代码就不会再有问题了,原因是引用了不同实例的问题。
xmlReader.parse(new File(filename),new SAXCounter());
把它改成:
xmlReader.parse(new File(filename),this);
你的代码就不会再有问题了,原因是引用了不同实例的问题。
解决方案 »
- java加载图片
- 如何根据已知的URL 获取该URL传递过来的信息
- hibernate 多对一字段问题,请各位老大帮忙啊!
- 关于STRUTS的登陆问题.我怎么登陆不了!
- hibernate collection mapping key问题
- 请高手帮忙详细的说明一下rmi-iiop的编写过程。
- 使用Tile和Struts碰到的奇怪问题,解决后马上给分,不够再加!!!
- 在线等待,解决立即给分!在sun操作系统上怎么安装weblogic啊!
- struts中的actionform到底是怎么回事?我总是不明白。
- glassfish3 读不到web程序的jar包
- 关于Struts!
- 有谁知道网上哪有jb+weblogic7.0+oracle开发j2ee的配置???散分!!!
'this' cannot be referenced form a static context
我把static public void main(String[] args) {
改成了
public void ParseFile(String filename) {
然后在其他java文件中调用
SAXReader parser=new SAXReader();
parser.ParseFile(strSourceFilePath) ;
不管是xmlReader.parse(new File(filename),new SAXCounter());还是
xmlReader.parse(new File(filename),new SAXCounter());都不行呀,输出的不是null而是空白,请问用String(p0,p1,p2);究竟得到的是节点的什么信息?
public void startElement(
String namespaceURI,
String localName,
String rawName,
Attributes attrs)
throws SAXException {}3)我没有你所有的SOURCE CODE,时间原因不再给你细分析,以下是我们工程中用到的解析代码段:
//完成对xmlString的解析工作
private void parser(String xmlString) throws WebException { SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = null;
XMLReader reader = null;
try {
// 创建一个SAXParser解析器对象
saxParser = spf.newSAXParser();
reader = saxParser.getXMLReader(); } catch (Exception ex) {
LogHelper log =
new LogHelper("com.XXXXXXXXXXXXXXXX.class");
log.log(getEnvHead(), 300004, ex.getMessage());
if (GlobalNames.DEBUG_OUTPUT_FLAG) {
System.err.println(ex);
}
throw new WebException("sax parser load error");
}
try { StringReader sr = new StringReader(xmlString);
//注册handler,并进行解析 saxParser.parse(new org.xml.sax.InputSource(sr), this); } catch (Exception ioe) {
LogHelper log =
new LogHelper("com.XXXXXXXXXXXX.class");
log.log(getEnvHead(), 300006, ioe.getMessage());
if (GlobalNames.DEBUG_OUTPUT_FLAG) {
System.err.println(ioe);
}
throw new WebException("IO error");
}
}
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import java.util.*;
import java.io.*;
public class SAXReader extends DefaultHandler {
java.util.Stack tags=new java.util.Stack();
//--------------XML Content-------------
String text=null;
String url=null;
String author=null;
String description=null;
String day=null;
String year=null;
String month=null;
//----------------------------------------------
public void endDocument() throws SAXException {
System.out.println("------Parse End--------");
}
public void startDocument() throws SAXException {
System.out.println("------Parse Begin--------");
}
public void startElement(String p0, String p1, String p2, Attributes p3) throws SAXException {
tags.push(p2);
}
public void endElement(String p0, String p1, String p2) throws SAXException {
tags.pop();
//一个link节点的信息收集齐了,将其格式化输出
if (p2.equals("sbml")) printout();
}
public void characters(char[] p0, int p1, int p2) throws SAXException {
//从栈中得到当前节点的信息
String tag=(String) tags.peek();
if (tag.equals("specie")) text=new String(p0,p1,p2);
else if (tag.equals("reaction")) url=new String(p0,p1,p2);
else if (tag.equals("kineticLaw")) author=new String(p0,p1,p2);
else if (tag.equals("day")) day=new String(p0,p1,p2);
else if (tag.equals("month")) month=new String(p0,p1,p2);
else if (tag.equals("year")) year=new String(p0,p1,p2);
else if (tag.equals("description")) year=new String(p0,p1,p2);
}
private void printout(){
System.out.print("specie: ");
System.out.println(text);
System.out.print("reaction: ");
System.out.println(url);
System.out.print("kineticLaw: ");
System.out.println(author);
System.out.print("Date: ");
System.out.println(day+"-"+month+"-"+year);
System.out.print("Description: ");
System.out.println(description);
System.out.println();
}
//static public void main(String[] args) {
public void ParseFile(String filename) {
//String filename = null;
boolean validation = false;
//filename="links.xml";
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser=null;
try {
saxParser = spf.newSAXParser();
} catch (Exception ex) {
System.err.println(ex);
System.exit(1);
}
try {
//saxParser.parse(new File(args[0]),new SAXReader());
saxParser.parse(new File(filename),this);
} catch (SAXException se) {
System.err.println(se.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
System.exit(1);
}
}
}
然后在其他页面中调用
SAXReader parser=new SAXReader();
parser.ParseFile(strSourceFilePath);
这就是全部代码了。因为要对xml的内容做详细操作,所以用楼上的方法好像简单了些。实在不好意思:)