0

我使用 SAX 解析器来解析 xml 文件并将我的数据存储到解析器的 endDocument 方法中的一些 arraylists-hashmaps 中。似乎在解析结束后我的所有引用都消失了,当我尝试从我的主要方法访问它们时,我得到零 arraylist-hashmap size()。换句话说,我在解析后保存数据,但只能在 sax 解析期间打印出来。解析完成后如何保存它们以便重新使用它们?我尝试创建一个包含我需要的信息的对象列表,但它没有用。

处理程序代码:

public class MyHandler extends DefaultHandler { 
private List<String> Rules = new ArrayList<String>();


public MyHandler() {acc = new StringBuilder();}  
public void startDocument(){

        String startDocumentString="Parsing started -----  Discovered Rules :";             
        System.out.println(startDocumentString);}

public void endDocument(){          
        String endDocumentString="\n \nParsing ended ------";               
        System.out.println(endDocumentString);
for(int i=0 ; i< rulesNumber ; i++){
setRules(Result[(0+(3*i))]);
System.out.println("Assosiative Rule " + (i+1) +": "+ Result[(0+(3*i))]);}

public void startElement(String nameSpaceURI, String localName, String qName, Attributes atts) {
if(qName.equals("AssociationRule")) {
setRulesNumber();}

public void endElement(String nameSpaceURI,String localName, String qName) {
(acc.toString()).trim();
    System.out.print(acc.toString());
    Results.add(acc.toString());        

    acc.setLength(0);
    unsetDecision();
    }           

public void characters (char[] ch, int start , int length) { 
    if(decision)
    acc.append(ch, start, length);          
    }


public void setRules(String s){Rules.add(s);}

public List<String> getRules(){return Rules;}   
4

1 回答 1

0

您需要保留对您的ContentHandler例如的参考

//keep a reference to MyHandler
MyHandler handler = new MyHandler();

XMLReader parser = XMLReaderFactory.createXMLReader();

parser.setContentHandler(handler);

parser.parse(mySource);

//get your results
List<String> rules = handler.getRules();
于 2013-08-26T09:04:58.110 回答