gpt4 book ai didi

Java SAX : how to use DefaultHandler in the main class

转载 作者:行者123 更新时间:2023-12-01 10:09:40 25 4
gpt4 key购买 nike

我制作了一个 sax 解析器,其主类具有 main 方法,并使用 XMLReader.setContentHandler(myCustomParserClass) 设置解析器,这是一个扩展 DefaultHandler 的单独类:

 public class SAXHandler {

public static void Main(String args[]) {
XMLReader.setContentHandler(myCustomParserClass); }
}

class MyCustomParserClass extends DefaultHandler { ... }

但我有一个问题。它是一个赋值,条件是主类必须扩展DefaultHandler,如:

    class SAXHandler extends DefaultHandler {

public static void main(String args[]) { ... }

public void startElement(String uri...) { }
public void endElement(String uri...) { }

而且我真的不知道如何实现 XMLReader,当解析器的类...也是具有 main 方法的类并且必须将其设置为内容处理程序时,我该如何设置文件中只有这一类。

提前谢谢

最佳答案

DefaultHandler 类根本不应该包含 main() 方法。使用 DefaultHandler 类的方式有点棘手。它包含许多需要重写的方法,因为默认情况下......它们什么也不做。

SAXParser 通过顺序读取 XML 文件来工作。它检测 XML 节点何时打开或关闭,并使用 DefaultHandler 子类(在您的例子中为 SAXHandler)来确定每个节点打开或关闭时要执行的操作。将 DefaultHandler 类视为某种字典是有帮助的,解析器将在读取 XML 时将其用作引用。

当解析器检测到节点的开始标记时,将调用

startElement();当解析器检测到节点的结束标记时,将调用 endElement()。每个方法的参数都包含有关节点本身的信息,这些信息是从解析器传回的。您在这些方法中编写的代码告诉解析器在遇到相应的开始/结束标记时要做什么。

您可能想要重写的方法是 startElement()endElement(),也可能是 characters()。您最有可能使用的参数是 localNameqNameattributes,它实际上是 Attribute 的列表code> 对象,其成员可以通过 getIndex(int index) 访问,其值可以通过 getValue() 访问。

看看这个教程,这是我学习如何使用 SAX 的方法;这个演示让我明白了这一点: http://www.tutorialspoint.com/java_xml/java_sax_parser.htm

DefaultHandler 的文档: https://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/DefaultHandler.html

关于Java SAX : how to use DefaultHandler in the main class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36210742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com