【问题标题】:How can I return data (string array) from the SAXParser handler?如何从 SAXParser 处理程序返回数据(字符串数组)?
【发布时间】:2013-06-15 18:39:01
【问题描述】:

使用下面的代码,我想为节点内的每个数据从 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)>
 }
}

【问题讨论】:

    标签: java saxparser


    【解决方案1】:

    如果您将存储结果的变量(例如 a 在这种情况下)公开或为它们创建一个 getter 方法,您将能够访问它们并使用存储在处理程序类之外的代码中的任何信息.

    【讨论】:

      【解决方案2】:

      创建另一个类并扩展DefaultHandler。在处理程序类中创建方法(例如:-sample)。在调用SAXParser.parse(filename,handler) 之前调用示例方法。创建列表作为全局变量。您可以将所需的值添加到列表中。最后从示例方法返回列表。

      【讨论】:

      • 请在您的答案中添加一些代码和格式 - 这很难阅读。您可以在答案中使用编号列表以获得更好的质量。感谢您的贡献
      猜你喜欢
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多