[英]Parse special characters in xml stax file
我有以下問題:
原始RSS文件的一部分:
<item>
<title> I can get data in tag this </title>
<description><p> i don't get data in this </p></description></item>
當我使用StAX解析器讀取文件時,特殊字符'&lt'; 。 它會自動轉換為“ <”。 那么我無法在標簽“ <'description>'”的其余部分中獲取數據
這是我的代碼:
public Feed readFeed() {
Feed feed = null;
try {
boolean isFeedHeader = true;
String description = "";
String title = "";
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
InputStream in = read();
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
String localPart = event.asStartElement().getName()
.getLocalPart();
switch (localPart) {
case "title":
title = getCharacterData(event, eventReader);
break;
case "description":
description = getCharacterData(event, eventReader);
break;
}
} else if (event.isEndElement()) {
if (event.asEndElement().getName().getLocalPart() == ("item")) {
FeedMessage message = new FeedMessage();
message.setDescription(description);
message.setTitle(title);
feed.getMessages().add(message);
event = eventReader.nextEvent();
continue;
}
}
}
} catch (XMLStreamException e) {
throw new RuntimeException(e);
}
return feed;}
private String getCharacterData(XMLEvent event, XMLEventReader eventReader)
throws XMLStreamException {
String result = "";
event = eventReader.nextEvent();
if (event instanceof Characters) {
result = event.asCharacters().getData();
}
return result;}
我正在按照以下說明進行操作: http : //www.vogella.com/tutorials/RSSFeed/article.html
本教程有缺陷。 這並不能說明您可以為單個文本塊獲得多個文本事件的事實(當您嵌入實體時往往會發生這種情況)。
為了使您的生活更輕松,請確保在創建XMLEventReader之前在XMLInputFactory 上將IS_COALESCING屬性設置為true(此屬性將強制閱讀器將所有相鄰的文本事件組合為一個事件)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.