gpt4 book ai didi

java - 使用 sax 解析器实现的设计问题

转载 作者:行者123 更新时间:2023-12-01 13:52:57 26 4
gpt4 key购买 nike

我将通过以下单独的 .java 文件解释我的 SAX 解析器的设计实现。

解析器.java

public static void main(String[] args){
Parser myParser = new Parser();
Parser.parseXML(inputFile); //may not be correct call,
//but using it to make things clear to understand
}


public void parseXML(File inputFile) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
SaxHandler handler = new SaxHandler();
parser.parse(inputFile, handler);
} ....
}

SaxHandler.java

public class SaxHandler extends DefaultHandler {

public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException{
MyClass mine = new MyClass();
return mine.returnString; // I would like to have this line so that I can return
//"Hello" ultimately to the main method
}

public void characters(char ch[], int start, int length) throws SAXException {
}

public void endElement(String uri, String localName,
String qName) throws SAXException {
}

MyClass.java

public String returnString()
{
return "Hello";
}

正如我在评论中提到的,我想找到一种方法或更改我的实现,以便我可以在 main 方法中获取字符串“Hello”。在上面的实现中,问题出在 SAXHandler 的 startELement 和 endELement 方法的返回类型上。是否有任何解决方法或设计更改以便我能够达到预期的结果?我希望我的问题很清楚。

谢谢

最佳答案

其背后更普遍的问题似乎是:解析器如何根据它正在读取的内容构建一些数据结构。

在您的情况下,您可以将数据(即“Hello”)存储在 SaxHandler 的私有(private)字段中。此外,您还可以向 SaxHandler 添加一个 getter,即 String getData()。 parseXml 方法可以以

结束
  return handler.getData();

关于java - 使用 sax 解析器实现的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19823947/

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