使用下面的代码,我想从SAX解析器返回节点内每个数据的数据数组。我有一个数组列表,将数据保存在每个叶节点下。如何在处理程序外使用此数据或将其返回? -
public class ReadXMLFile {
public static xmldataparser(String argv[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean burl = false;
boolean bip = false;
List<String> a = new ArrayList<String>();
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
if (qName.equalsIgnoreCase("URL")) {
burl = true;
}
if (qName.equalsIgnoreCase("IP")) {
bip = true;
}
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
}
public void characters(char ch[], int start, int length) throws SAXException {
if (burl) {
System.out.println("URL : " + new String(ch, start, length));
a.add(new String(ch, start, length));
burl = false;
}
if (bip) {
System.out.println("IP : " + new String(ch, start, length));
bip = false;
a.add(new String(ch, start, length));
}
}
};
}
return <the array from the handler(this is where I need help)>
}
}
答案 0 :(得分:1)
如果您创建存储结果的变量(例如,在这种情况下为a
)public或为它们创建getter方法,您将能够访问它们并使用存储在其中的代码之外的任何信息。处理程序类。
答案 1 :(得分:-1)
创建另一个类并扩展DefaultHandler
。在处理程序类中创建方法(例如:-sample)。在调用SAXParser.parse(filename,handler)
之前调用样本方法。将列表创建为全局变量。您可以将所需的值添加到列表中。最后从示例方法返回列表。