繁体   English   中英

SAX解析器返回空字符串

[英]SAX Parser returning empty string

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

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

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

}

当我尝试打印描述标签的“文本”时,它显示为空。 上面的代码是否有错误,或者是引起问题的RSS数据格式?

对于单个文本节点,可以多次调用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;
}

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

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

但是此方法似乎可以完成Java API在String构造函数中的工作: http : //docs.oracle.com/javase/7/docs/api/java/lang/String.html#String%28char[],% 20int,%20int%29

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM