我一直在谷歌上搜索SO,但没有任何效果。我在XML Feed中遇到字符问题。我在String中保存每个标记的值,但是当
出现时,它就会停止。我只在标签中得到4-5个第一个单词。
那么有人可以帮我一个可以删除它的方法吗?或者可能是XML Feed中标签中的文本对于String来说太长了?
谢谢!
示例代码:
public void characters(char[] ch, int start, int length)
throws SAXException {
if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentElement = false;
/** set value */
if (localName.equalsIgnoreCase("title"))
sitesList.setTitle(currentValue);
else if (localName.equalsIgnoreCase("id"))
sitesList.setId(currentValue);
else if(localName.equalsIgnoreCase("description"))
sitesList.setDescription(currentValue);
}
description标签中的文字很长,但我只在
个字符开始出现之前得到前五个字。
答案 0 :(得分:1)
您正在使用SAXparser来解析XML-String。
只读一个XML元素时,可以多次调用characters()
- 方法。当它找到类似<desc>blabla bla & # 39; bla bla la.</desc>
的内容时会发生这种情况。
解决方法是使用StringBuilder
并在characters()
- 方法中附加已重新添加的字符,然后重置StringBuilder
方法中的endElement()
:
private class Handler extends DefaultHandler{
private StringBuilder temp_val;
public Handler(){
this.temp_val = new StringBuilder();
}
public void characters(char[] ch, int start, int length){
temp_val.append(ch, start, length);
}
public void endElement(String uri, String localName, String qName){
System.out.println("Output: "+temp_val.toString());
// ... Do your stuff
temp_val.setLength(0); // Reset the StringBuilder
}
}
鉴于此XML-File:
,上述代码适用于我<?xml version="1.0" encoding="iso-8859-1" ?>
<test>This is some example-text.</test>
输出结果为:
输出:这是一些 例如文本。