Java 使用sax解析器实现中的设计问题
我将通过以下单独的.java文件解释SAX解析器的设计实现 Parser.javaJava 使用sax解析器实现中的设计问题,java,design-patterns,xml-parsing,sax,Java,Design Patterns,Xml Parsing,Sax,我将通过以下单独的.java文件解释SAX解析器的设计实现 Parser.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 under
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的私有字段中。此外,还要向SaxHandler添加一个getter,即
String getData()
。然后,parseXml方法可以以
return handler.getData();
在SaxHandler的构造函数中,可以获得对解析器对象的引用,并在解析器中调用所需的方法来处理所需的字符串 <> >在代码的中间> StistelEng/<代码>是不正确的,因为它会停止整个解析过程。因此,DefaultHandler中的所有方法都是
void