SAX Parser返回空字符串

时间:2014-07-31 17:39:50

标签: java rss sax

我正在尝试从RSS Feed中提取数据。 RSS链接 - http://www.thehindu.com/sport/?service=rss

这是我的默认处理程序的字符方法。

public void characters(char[] ch, int start, int length) {
    String text = "";
    for (int i=0; i<length; i++)
        text += ch[start+i];

}

当我尝试打印&#39;文字时对于描述标签,它是空的。 上面的代码是否有错误,或者导致问题的RSS数据格式是什么?

2 个答案:

答案 0 :(得分:2)

可能会多次调用characters方法,以便单个文本节点更好地使用以下内容:

private StringBuilder stringBuilder; // or Deque<StringBuilder> for nested elements

public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

  if ("...".equals(qName)) {
      stringBuilder = new StringBuilder();
  }

}

public void characters(char ch[], int start, int length)  {
  if (stringBuilder != null)
     stringBuilder.append(ch, start, length);
}

public void endElement(String uri, String localName, String qName) {
  if ("...".equals(qName)){
    String s = stringBuilder.toString();
  }
  stringBuilder = null;
}

...用于包含文本节点的元素的值。根据您的名称空间使用情况,您可能必须使用与localName相关联的qName

答案 1 :(得分:0)

目前尚不清楚我们如何从RSS的SAX表示到达这里;或者,就此而言,您已经做了什么来验证您已获取URL,获取并解析了一些RSS。

但是这个方法似乎做了Java API在String构造函数中可以做的事情:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#String%28char[],%20int,%20int%29

相关问题