더 일반적인 질문은 다음과 같습니다. 파서가 어떻게 데이터 구조를 읽고있는 것부터 일부 데이터 구조를 구축 할 수 있습니까?
귀하의 경우 데이터 (예 : "Hello")를 Saxhandler의 개인 분야에 저장할 수 있습니다. 또한 당신은 getter를 추가합니다 String getData()
색소폰에. 그런 다음 parsexml 방법이 끝날 수 있습니다
return handler.getData();
문제
다음 별도의 .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 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";
}
주석에서 언급했듯이 주요 방법에서 문자열 "Hello"를 얻을 수 있도록 방법을 찾거나 구현을 변경하고 싶습니다. 위의 구현에서 문제는 Saxhandler의 StartElement 및 Endlement 방법의 반환 유형에 관한 것입니다. 원하는 결과를 얻을 수 있도록 해결 방법 또는 설계 변경 사항이 있습니까? 내 질문이 분명하기를 바랍니다.
감사
해결책
더 일반적인 질문은 다음과 같습니다. 파서가 어떻게 데이터 구조를 읽고있는 것부터 일부 데이터 구조를 구축 할 수 있습니까?
귀하의 경우 데이터 (예 : "Hello")를 Saxhandler의 개인 분야에 저장할 수 있습니다. 또한 당신은 getter를 추가합니다 String getData()
색소폰에. 그런 다음 parsexml 방법이 끝날 수 있습니다
return handler.getData();
다른 팁
색소폰 핸들러의 생성자에서 파서 객체에 대한 참조를 얻고 원하는 문자열을 처리 할 파서에서 원하는 방법을 호출 할 수 있습니다.
한가운데서 돌아옵니다 startElement
전체 구문 분석 프로세스를 중지하기 때문에 정확하지 않습니다. 따라서 Defaulthandler의 모든 방법은 다음과 같습니다 void
.