jsp读取XML文件!!!!!!!!!!!

jiaminxy 2003-11-05 06:27:03
忘老大门提供部分代码!
...全文
607 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Alan 2003-12-15
  • 打赏
  • 举报
回复
public String getStr()
{
String stemp = "";
stemp = this.readXMLFile("c:\\SampleReport.xml");
//System.out.println("stemp="+stemp);
return stemp;
}
最好将该文件放到你的tomcat web application目录下
并定义如下常量(以下仅为例子,请根据自己的机器环境设置)
/**配置文件路径*/
public static final String ConfigPath = "c:\\Tomcat41\\example_webapps\\example_config\\";//如果可能尽量使用相对路径
/**配置文件名称*/
public static final String ConfigName = "SampleReport.xml";
dwju1981 2003-12-13
  • 打赏
  • 举报
回复
干吗不用JDOM?
这么方便的东西
raymond323 2003-12-13
  • 打赏
  • 举报
回复
up
yzying1980 2003-12-13
  • 打赏
  • 举报
回复
我刚在项目中写过一个(不过对原理还不是很懂)---有人要代码可以给我留言。(我的应用是从EXVEL转成XML,在通过JSP解析将数据插入到ORACLE中)
xqi8 2003-12-13
  • 打赏
  • 举报
回复
up
xqi8 2003-12-12
  • 打赏
  • 举报
回复
up
jiaminxy 2003-11-05
  • 打赏
  • 举报
回复
大哥们,我补充一下,我现在是想把XML文件读完了以后以String的形式返回,目前我写了一种方法,在JB里面可以通过,在TOMCAT里面用JSP访问就报错误,麻烦各位看看

java类:
package dwb.bo;

import java.util.*;
import java.text.*;
import java.sql.ResultSet;
import dwb.util.*;



import java.io.*;
import org.w3c.dom.*;
import org.apache.xml.serialize.*;
import org.apache.xerces.parsers.DOMParser;

public class Explain_XML{


public static String readXMLFile(String strFileName)
{
Document doc;
String initXml = null;

try {
DOMParser dp = new DOMParser();
dp.parse(strFileName);
doc = dp.getDocument();
String encoding = "GB2312";
int LineWidth = 0;
OutputFormat of = new OutputFormat();
of.setEncoding(encoding);
of.setLineWidth(LineWidth);
ByteArrayOutputStream Stream = new ByteArrayOutputStream();
XMLSerializer xs = new XMLSerializer(Stream, of);
xs.serialize(doc);
initXml = Stream.toString();
}
catch (Exception e)
{
Debug.pln("PubFunc-genStrFromXMLFile","\nError: " + e.getMessage());
}
return initXml;
}


public String getStr()
{
String stemp = new String();
stemp = this.readXMLFile("c:/SampleReport.xml");
//System.out.println("stemp="+stemp);
return stemp;
}

}


JSP:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<%@ page import ="dwb.util.*"%>
<%@ page import ="dwb.bo.*"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="org.xml.sax.*" %>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.apache.xml.serialize.*" %>
<%@ page import="org.apache.xerces.parsers.DOMParser" %>

<%
Explain_XML xml = new Explain_XML();
String strLine = new String();
strLine = xml.getStr();
out.println(strLine);
%>

错误信息:org.apache.jasper.JasperException: (class: dwb/bo/Explain_XML, method: readXMLFile signature: (Ljava/lang/String;)Ljava/lang/String;) Incompatible object argument for function call
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:248)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:289)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:240)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
at java.lang.Thread.run(Thread.java:536)

Alan 2003-11-05
  • 打赏
  • 举报
回复
/**
* 实现ContentHandler接口方法,当开始解析一个元素内容时被调用
* @param buf 内容
* @param offset 开始位置
* @param len 长度
* @throws SAXException
*/
public void characters(char buf[], int offset, int len)throws SAXException
{
String sTempContent = new String(buf, offset, len);
if(sTempContent==null||sTempContent.trim().equals("") )
return;
if(sNowElement.equals("actionid"))
sTempID = sTempContent;
if(sNowElement.equals("actionname"))
sTempName = sTempContent;
if(sNowElement.equals("pageurl"))
sTempPageInfo[0] = sTempPageInfo[0] + sTempContent;
if(sNowElement.equals("log"))
sTempPageInfo[1] = sTempPageInfo[1] + sTempContent;
if(sNowElement.equals("loginfo"))
sTempPageInfo[2] = sTempPageInfo[2] + sTempContent;
if(sNowElement.equals("arealevel"))
sTempPageInfo[3] = sTempPageInfo[3] + sTempContent;
}

/**
* 实现ContentHandler接口方法,当解析一个元素结素时被调用
* @param namespaceURI
* @param sName
* @param qName
* @throws SAXException
*/
public void endElement(String namespaceURI,String sName,String qName)throws SAXException
{
if(qName.equals("action"))
{
ActionValueBean tempAction = new ActionValueBean();
tempAction.setActionID(Integer.parseInt(sTempID));
tempAction.setModuleName(sNowModule);
tempAction.setSubmoduleName(sNowSubModule);
tempAction.setActionName(sTempName);
tempAction.setPageList(clcTempPageList);
clcActionList.add(tempAction);
sTempID = "";
sTempName = "";
clcTempPageList = new ArrayList();
}
if(qName.equals("page"))
{
clcTempPageList.add(sTempPageInfo);
sTempPageInfo = new String[]{"","","",""};
}
if(qName.equals("sNowSubModule"))
{
sNowSubModule="";
}
}

/**
* 取解析出的动作信息
* @return Collection 动作信息
*/
public Collection getAllAction()
{
return clcActionList;
}
}
Alan 2003-11-05
  • 打赏
  • 举报
回复
只需要读取?那你最好用SAX,DOM太占内存。
给你个例子
import java.util.Collection;
import java.util.ArrayList;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
import com.netutel.ubisp.systemadmin.purviewadmin.value.ActionValueBean;
import com.netutel.ubisp.util.LogMan;


/**
* <p>Title: 系统动作处理类</p>
* <p>Description: 解析动作XML文档,将解析出的动作信息保存在Collection中。<br>
* 由于系统对动作只有读操作,所以使用SAX解析,不构建DOM树</p>
* <p>Copyright: BCMS2.0 Copyright (c) 2002</p>
* <p>Company: Netutel Technologies Co.</p>
* @author
* @version 1.0
*/

public class ActionProcess extends DefaultHandler
{
//临时保存解析数据的变量
private String sTempID;
private String sTempName;

private String[] sTempPageInfo;
private Collection clcTempPageList;
//记录当前解析元素
private String sNowElement;
//记录当前模块
private String sNowModule;
//记录当前子模块
private String sNowSubModule;
//保存解析出来的动作信息
private Collection clcActionList;
/**
* 构造,初始化变量,同时完成XML解析
*/
public ActionProcess()
{
sTempID = "";
sTempName = "";
sTempPageInfo = new String[]{"","","",""};
clcTempPageList = new ArrayList();
sNowElement = "";
clcActionList = new ArrayList();
SAXParserFactory factory = SAXParserFactory.newInstance();
try
{
SAXParser saxParser = factory.newSAXParser();
saxParser.parse("bcmsConfig/BcmsAction.xml",this);
}
catch(Exception ex)
{
LogMan log = new LogMan();
log.writeLog("构造动作处理类错误:",ex);
}
}

/**
* 实现ContentHandler接口方法,当开始解析一个元素时被调用。
* @param namespaceURI 命名空间URI,当文档定义NAMESPACE时有效
* @param lName 本地名称,当文档定义NAMESPACE时有效
* @param qName qualified name
* @param attrs 元素包含属性
* @throws SAXException
*/
public void startElement(String namespaceURI,String lName,String qName,Attributes attrs)throws SAXException
{
sNowElement = qName;
if(qName.equals("module"))
sNowModule = attrs.getValue(0);
if(qName.equals("submodule"))
sNowSubModule = attrs.getValue(0);
}
rainight 2003-11-05
  • 打赏
  • 举报
回复
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.util.*;
public class Test2 {
public Test2() {
}

public static void main(String[] args) throws Exception{
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse("gui_vip.xml");
Element root=doc.getDocumentElement();
NodeList nl=root.getElementsByTagName("field");
for(int i=0;i<nl.getLength();i++){
Element element=(Element)nl.item(i);
......
}
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧