package javawebservice;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.apache.xerces.parsers.*;
public class SAXDemo extends DefaultHandler
{
public static void main(String[] args)
{
try
{
//生成SAXParser
SAXParser parser=(SAXParser)Class.
forName("org.apache.xerces.parsers.SAXParser").
newInstance();
SAXDemo handler=new SAXDemo();
//生成Handler实例
FilterHandler filter=new FilterHandler();
parser.setContentHandler(handler);
System.out.println("\nNow the parser is working...\n");
//解析文件
parser.parse("TestXerces.xml");
System.out.println("\nNow the filter is working ...\n");
//为过滤器设置解析器
filter.setParent(parser);
//为过滤器设置处理器
filter.setContentHandler(handler);
//解析文件
filter.parse("TestXerces.xml");
}
catch(Exception e)
{
System.out.println(e.toString());
}
}
public void startElement
(String uri,String localName,String qName,Attributes attr)
{
System.out.println("start of a Element --> uri: "+
uri+" localName: "+localName+" qName: "+qName);
//打印该元素节点所有属性
if(attr.getLength()>0)
{
for(int i=0;i<attr.getLength();i++)
{
System.out.println("\t...with attribute --> "+
attr.getQName(i)+"="+attr.getValue(i));
}
}
}
public void endElement
(String uri,String localName,String qName)
{
System.out.println("end of a Element --> uri: "+uri+
" localName: "+localName+" qName: "+qName);
}
static class FilterHandler extends XMLFilterImpl
{
int index=0;
public void startElement
(String uri,String localName,String qName,Attributes attr)
throws SAXException
{
AttributesImpl attrImpl=new AttributesImpl(attr);
for (int i=0;i<attrImpl.getLength();i++)
{
//检查是否有ID属性
if(attrImpl.getQName(i).toUpperCase().equals("ID"))
{
attrImpl.removeAttribute(i);
break;
}
}
//新建ID属性
attrImpl.addAttribute
("","id","id","ID",String.valueOf(index++));
super.startElement(uri,localName,qName,attrImpl);
}
public void endElement
(String uri,String localName,String qName)
throws SAXException
{
super.endElement(uri,localName,qName);
}
public void characters(char[] ch,int iStart,int iLength)
throws SAXException
{
super.characters(ch,iStart,iLength);
}
}
}
分享到:
相关推荐
本实例代码“SAXDemo”是基于SAX(Simple API for XML)解析器的Java实现,它是一种事件驱动的解析方式,适用于处理大型XML文件。 SAX解析器的工作原理是,当解析器读取XML文件时,会触发一系列的事件,如开始文档...
标题中的“saxDemo.rar_Eclipse_sax_xml”暗示了这是一个关于使用Eclipse IDE和SAX解析器处理XML文件的示例项目。SAX(Simple API for XML)是一种基于事件驱动的XML解析方法,它不将整个XML文档加载到内存中,而是...
本篇文章将详细介绍DOM和SAX解析XML的方法,并通过提供的`DomDemo.java`和`SaxDemo.java`示例代码进行阐述。 1. DOM解析: DOM是一种将整个XML文档加载到内存中,构建一个树形结构的解析方式。这种方式允许开发者...
在提供的文件中,`SAXDemo.java`很可能是实现这些步骤的一个示例程序。它可能包含了如何创建解析器,设置事件处理器,以及如何处理XML内容的代码。例如,它可能包含以下关键部分: ```java // 创建SAX解析器工厂 ...
SaxDemo handler = new SaxDemo(); reader.setContentHandler(handler); reader.parse(new InputSource("path_to_xml_file")); } } ``` 在这个例子中,我们创建了一个名为`SaxDemo`的类,继承自`DefaultHandler...
这个简单的示例中,`SaxDemo`类继承了`DefaultHandler`,并重写了几个关键方法。在`main()`方法中,我们创建了`SAXParserFactory`和`SAXParser`,然后使用`parse()`方法解析名为`testSaxXML.xml`的XML文件。 总结...
public class SAXDemo extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("tag".equals(qName)) {...
public class SAXDemo extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { // 处理开始标签 } @Override public void ...
public class SaxDemo { public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); ...
public class SaxDemo { public static void main(String[] args) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); DefaultHandler ...
public class SaxDemo { public static void main(String[] args) { try { // 创建SAX解析器工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); // 配置解析器,如果需要解析命名空间,可以...
下面我们将通过一个名为"SaxDemo"的实例来展示如何在Android项目中实现SAX解析。 1. **创建解析器**: 首先,我们需要创建一个继承自`DefaultHandler`的类,这个类将会包含所有处理XML事件的方法。例如: ```java ...
public class SaxDemo extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { if ("employee".equals(qName...
public class SaxDemo { public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); ...
public class SaxDemo implements ContentHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.println(...
public class SaxDemo { public static void main(String[] args) throws IOException, SAXException { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory....
在Android开发中,处理XML数据是一项常见的任务,无论是从网络获取数据、读取本地资源还是进行数据交换。SAX(Simple API for XML)是一种事件驱动的XML解析器,它以低内存占用和高效的处理速度而著称,尤其适用于...