Мне нужно поймать данные из < itunes: sumary>, но мой обработчик получает только конец содержимого тега (например, последние три слова). Я не знаю, что делать, потому что другие теги обрабатываются так, как ожидалось, получая все содержимое. *SAX получает только конец строки содержимого
Я видел, что некоторые теги игнорируются парсером, но я не думаю, что это происходит потому, что, поскольку я сказал, что получает контент, но только в конце этого.
Источник XML размещается в ->http://djpaulonla.podomatic.com/archive/rss2.xml
Пожалуйста, может кто-то помочь мне ??? Код следующее:
public class PodOMaticCustomHandler extends CustomHandler {
public PodOMaticCustomHandler(int quantityToFetch, String startTagValue,
String endTagValue) {
super(quantityToFetch, startTagValue, endTagValue);
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
super.characters(ch, start, length);
this.value = new String(ch, start, length);
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
this.endDoc = true;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
super.endElement(uri, localName, qName);
if (this.podcast != null) {
if (qName.equalsIgnoreCase("title")) {
podcast.setTitle(this.value);
} else if (qName.equalsIgnoreCase("pubDate")) {
podcast.setPubDate(this.value);
} else if (qName.equalsIgnoreCase("description")) {
podcast.setContent(this.value);
} else if (qName.equalsIgnoreCase("guid")) {
this.podcast.setLink(value);
}
}
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
if (this.startTagValue == null) {
this.startTagValueFound = true;
} else if (qName.equalsIgnoreCase("guid")
&& this.value.equalsIgnoreCase(this.startTagValue)) {
this.startTagValueFound = true;
}
if (this.endTagValue != null) {
if (qName.equalsIgnoreCase("guid")
&& this.value.equalsIgnoreCase(this.endTagValue)) {
this.endDoc = true;
}
}
if (!this.endDoc) {
if (this.quantityToFetch != this.podcasts.size()) {
if (this.startTagValueFound == true) {
if (qName.equalsIgnoreCase("item")) {
this.podcast = new Podcast();
} else if (qName.equalsIgnoreCase("enclosure")) {
this.podcast.setMedia(attributes.getValue("url"));
this.podcasts.add(podcast);
}
}
} else {
this.podcast = null;
}
}else{
this.podcast = null;
}
}
}
то, что вы столкнулись, является очень распространенным камнем преткновения с SAX, вам нужно реализовать метод символов по-разному. См. Ответы на вопрос, связанный в моем закрытом голосовании, для объяснения и примеров. –
Возможный дубликат [Sax parsing and encoding] (http://stackoverflow.com/questions/1890404/sax-parsing-and-encoding) – ewernli
Thanks = D Действительно полезный – Laniaventia