簡體   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