我已经制作了一个RSS阅读器,可以在小问题上使用一些帮助。当rss XML设置如下:
<link>http://www.grants.gov/search/search.do?mode=VIEW&oppId=98616</link>
我的读者可以将链接拉好。
但我尝试阅读的一些Feed设置如下:
<link>
http://www.ornl.gov/info/ornlreview/v44_1_11/article06.shtml
</link>
导致我的读者错过链接。
我已将问题缩小到:
@Override
public void characters(char[] ch, int start, int length)
{
// TODO Auto-generated method stub
String strCharacters = new String(ch,start,length);
if (itemFound==true){
// "item" tag found, it's item's parameter
switch(currentState){
case state_title:
item.setTitle(strCharacters);
break;
case state_description:
item.setDescription(strCharacters);
break;
case state_link:
item.setLink(strCharacters);
break;
case state_pubdate:
item.setPubdate(strCharacters);
break;
default:
break;
}
}
strCharacters在当前行中拉取字符串,但是带有空格的RSS只会拉出空格。有关如何让它跳过空格并在下一行拉链接的任何想法?
答案 0 :(得分:1)
创建documentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory。 newDocumentBuilder();
//实现必需的处理程序 公共类SaxParse扩展了DefaultHandler { } // saxParserFactory的新实例 SAXParserFactory factory = SAXParserFactory.newInstance(); // SAX PARSER的新实例 SAXParser saxparser = factory.newSAXParser(); //解析xml文档 SAXParser.parse(新文件(要解析的文件),新SAXXMLParserImpl());
答案 1 :(得分:0)
您的解析器看起来很奇怪,请尝试这样做:
private StringBuilder builder;
@Override
public void startDocument() throws SAXException {
super.startDocument();
builder = new StringBuilder();
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
builder.append(ch, start, length);
}
public void endElement(String uri, String localName, String name) throws SAXException {
if (currentState == state_link) {
item.setLink(builder.toString().trim());
}
builder.setLength(0);
}
这样你就等到内容被完全消耗,而不是只读一行文字。