用sax 读取xml 请高手们贴个小例子,小弟学习下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 实例用SAX方式解析XML文件 仍使用前面实例中的user.xml作为被解析的XML文件,JSP文件位于web应用xml中。JSP页面程式代码如下: saxParseUserXML1.jsp <%@ page contentType="text/html;charset=GB2312" %> <%@ page import="javax.xml.parsers.*, org.xml.sax.*, org.xml.sax.helpers.*, org.xml.sax.helpers.DefaultHandler, java.io.*"%> <html> <head><title>用SAX解析并遍历user.xml</title></head> <body> <%! static class SAXParseUser extends DefaultHandler{ StringBuffer tempString=new StringBuffer(); //文件解析开始 public void startDocument() throws SAXException { tempString.append("开始解析xml文件......<br>"); } //标签解析开始 public void startElement(String namespaceURI, String localName,String qName, Attributes atts) throws SAXException{ tempString.append("开始解析结点,结点名称:"+qName+"<br>"); //解析得到标签所有的属性 for(int i=0;i<atts.getLength();i++){ tempString.append(" 属性"+atts.getQName(i)+",值为:"+atts. getValue(i)+"<br>"); } } //标签解析结束 public void endElement(String namespaceURI,String localName,String qName) throws SAXException{ tempString.append("解析结点结束,结点名称:"+qName+"<br>"); } //字符串解析 public void characters(char[] ch,int start,int length){ tempString.append(" 解析出字符串,值为:’"+(new String(ch,start, length))+"’<br>"); } //文件解析结束 public void endDocument() throws SAXException { tempString.append("解析xml文件结束!<br>"); } //得到解析结果 public StringBuffer getPrintXML(){ return tempString; } } %> <% //生成SAX解析器工厂 SAXParserFactory spf = SAXParserFactory.newInstance(); XMLReader xmlReader = null; SAXParser saxParser=null; SAXParseUser saxParseUser=new SAXParseUser(); String filename=pageContext.getServletContext().getRealPath("/user.xml"); try { // 创建一个解析器SAXParser对象 saxParser = spf.newSAXParser(); // 得到SAXParser中封装的SAX XMLReader xmlReader = saxParser.getXMLReader(); //设置解析时处理事件的对象 xmlReader.setContentHandler(saxParseUser); //开始解析XML文件 xmlReader.parse(filename); }catch (Exception ex) { System.out.println(ex); } //输出解析结果 out.println(saxParseUser.getPrintXML()); %> </body> </html> 该程式声明了一个类SAXParseUser,用于声明处理解析user.xml时,触发事件调用的相应方法,在实际工程应用中可把类的声明作为JavaBean,而不直接写在JSP页面中。解析前先要实例化一个SAX解析工厂对象,并用此对象生成一个SAX解析器,再用解析器得到xmlReader对象,用此方法来解析XML文件。该程式的运行结果如图11-9所示。 C#的话,如果想顺序而非随机方式读写XML,可以用XmlReader和XmlWriter,MSDN中有说明和示例。 看看这个帖子是不是能够帮助你http://topic.csdn.net/t/20040109/18/2650543.html vs2010 引用dll 如何在程序里播放视频和声音文件 c#中多个文件上传的问题 CHM编码格式 C#能不能与MSCOMM串口通讯 用C#如何读写串口数据(.NET CF平台) C#连接sql DataGrid问题:DataGrid表头高度不能设置?DataGrid没有Footer? 有此控件无法调整大小,这种效果是如何实现的,小弟正在写一个小控件,谢了 求助: 有关C语言课程设计 线程加入了thread.sleep还是变成无响应,求助啊。。。 新手c#
仍使用前面实例中的user.xml作为被解析的XML文件,JSP文件位于web应用xml中。JSP页面程式代码如下:
saxParseUserXML1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="javax.xml.parsers.*,
org.xml.sax.*,
org.xml.sax.helpers.*,
org.xml.sax.helpers.DefaultHandler,
java.io.*"%> <html>
<head><title>用SAX解析并遍历user.xml</title></head>
<body>
<%!
static class SAXParseUser extends DefaultHandler{
StringBuffer tempString=new StringBuffer();
//文件解析开始
public void startDocument() throws SAXException {
tempString.append("开始解析xml文件......<br>");
}
//标签解析开始
public void startElement(String namespaceURI, String localName,String qName, Attributes atts) throws SAXException{
tempString.append("开始解析结点,结点名称:"+qName+"<br>");
//解析得到标签所有的属性
for(int i=0;i<atts.getLength();i++){
tempString.append(" 属性"+atts.getQName(i)+",值为:"+atts. getValue(i)+"<br>");
}
}
//标签解析结束
public void endElement(String namespaceURI,String localName,String qName) throws SAXException{
tempString.append("解析结点结束,结点名称:"+qName+"<br>");
}
//字符串解析
public void characters(char[] ch,int start,int length){
tempString.append(" 解析出字符串,值为:’"+(new String(ch,start, length))+"’<br>");
}
//文件解析结束
public void endDocument() throws SAXException {
tempString.append("解析xml文件结束!<br>");
}
//得到解析结果
public StringBuffer getPrintXML(){
return tempString;
}
}
%>
<% //生成SAX解析器工厂
SAXParserFactory spf = SAXParserFactory.newInstance();
XMLReader xmlReader = null;
SAXParser saxParser=null;
SAXParseUser saxParseUser=new SAXParseUser();
String filename=pageContext.getServletContext().getRealPath("/user.xml");
try {
// 创建一个解析器SAXParser对象
saxParser = spf.newSAXParser();
// 得到SAXParser中封装的SAX XMLReader
xmlReader = saxParser.getXMLReader();
//设置解析时处理事件的对象
xmlReader.setContentHandler(saxParseUser);
//开始解析XML文件
xmlReader.parse(filename);
}catch (Exception ex) {
System.out.println(ex);
}
//输出解析结果
out.println(saxParseUser.getPrintXML());
%>
</body>
</html> 该程式声明了一个类SAXParseUser,用于声明处理解析user.xml时,触发事件调用的相应方法,在实际工程应用中可把类的声明作为JavaBean,而不直接写在JSP页面中。解析前先要实例化一个SAX解析工厂对象,并用此对象生成一个SAX解析器,再用解析器得到xmlReader对象,用此方法来解析XML文件。
该程式的运行结果如图11-9所示。