广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州如何使用JAVA SAX API解析XML文件?_北大青鸟IT学校

作者:邓华发布时间:2021-04-15分类:Java技术浏览:669


导读:Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,如何使用JAVA SAX API解析XML文件?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,如何使用JAVA SAX API解析XML文件?下面就让我们一起来看看惠州北大青鸟老师是怎么回答的。

在下面我们将看到一个输出所有SAX事件的演示应用程序。它是从包中扩展 DefaultHandlerorg.xml.sax.helpers 如下。

public class Main extends DefaultHandler {

以下代码设置了解析器并启动它:

   SAXParserFactory spf = SAXParserFactory.newInstance();
   spf.setNamespaceAware(true);
   spf.setValidating(true);
   parser = spf.newSAXParser();
   parser.parse(file, this);

这些代码行创建一个SAXParserFactory实例,由 javax.xml.parsers.SAXParserFactory 系统属性的设置决定。

工厂被设置为支持XML命名空间将 setNamespaceAware 设置为 true 然后通过 newSAXParser()方法从工厂获取SAXParser实例。

然后它处理开始文档和结束文档事件:

 public void startDocument() {
   System.out.println("Start document: ");
 }  public void endDocument() {
   System.out.println("End document: ");
 }

之后,它使用 System.out.println 打印消息一旦方法是由解析器调用。

遇到开始标记或结束标记时,根据需要,将标记的名称作为String传递到 startElement 或endElement 方法。

当遇到开始标记时,它定义的任何属性都会在 Attributes 列表中传递。

 public void startElement(String uri, String localName, String qname, Attributes attr) {
   System.out.println("Start element: local name: " + localName + " qname: " + qname + " uri: "
       + uri);
 }

元素中的字符作为字符数组传递,以及字符数和指向第一个字符的数组的偏移量。

 public void characters(char[] ch, int start, int length) {
   System.out.println("Characters: " + new String(ch, start, length));
 }

完整的代码。

import java.io.File;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class Main extends DefaultHandler {  private static Main handler = null;  private SAXParser parser = null;  public static void main(String args[]) {    if (args.length == 0) {
     System.out.println("No file to process. Usage is:" + "\njava TrySAX <filename>");      return;
   }    File xmlFile = new File(args[0]);
   handler = new Main();
   handler.process(xmlFile);
 }  private void process(File file) {
   SAXParserFactory spf = SAXParserFactory.newInstance();
   spf.setNamespaceAware(true);
   spf.setValidating(true);
   System.out.println("Parser will " + (spf.isNamespaceAware() ? "" : "not ")
       + "be namespace aware");
   System.out.println("Parser will " + (spf.isValidating() ? "" : "not ") + "validate XML");    try {
     parser = spf.newSAXParser();
     System.out.println("Parser object is: " + parser);
   } catch (SAXException e) {
     e.printStackTrace(System.err);
     System.exit(1);
   } catch (ParserConfigurationException e) {
     e.printStackTrace(System.err);
     System.exit(1);
   }
   System.out.println("\nStarting parsing of " + file + "\n");    try {
     parser.parse(file, this);
   } catch (IOException e) {
     e.printStackTrace(System.err);
   } catch (SAXException e) {
     e.printStackTrace(System.err);
   }
 }  public void startDocument() {
   System.out.println("Start document: ");
 }  public void endDocument() {
   System.out.println("End document: ");
 }  public void startElement(String uri, String localName, String qname, Attributes attr) {
   System.out.println("Start element: local name: " + localName + " qname: " + qname + " uri: "
       + uri);
 }  public void endElement(String uri, String localName, String qname) {
   System.out.println("End element: local name: " + localName + " qname: " + qname + " uri: "
       + uri);
 }  public void characters(char[] ch, int start, int length) {
   System.out.println("Characters: " + new String(ch, start, length));
 }  public void ignorableWhitespace(char[] ch, int start, int length) {
   System.out.println("Ignorable whitespace: " + new String(ch, start, length));
 }

}

上面的代码生成以下结果。

No file to process. Usage is:

java TrySAX<filename>

想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区了解一下。

Java16.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表