2016-05-20 4 views
1

У меня следующий вопрос:Разбор специальные символы в XML-файле STAX

Оригинал часть RSS файла:

<item> 
     <title> I can get data in tag this </title> 
     <description>&lt;p&gt; i don't get data in this &lt;/p&gt;</description></item> 

Когда я прочитал файл, используя StAX анализатор специальный символ «& лт»; , Он автоматически преобразуется в «<». то я не могу получить данные в остальной части тега "<„описания>“

Это мой код:

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

+0

Как вы читали этот файл, используя синтаксический анализатор (соответствующий код)? И как (например, PLS) выглядит новый XML-файл? – zapl

+0

Тогда ваш код для записи в новый файл является ошибочным. Может быть, если вы покажете это, мы сможем определить, как это сделать. – Andreas

+0

Не второй '' должен быть закрывающим тегом, например ''? – dorukayhan

ответ

4

Учебник является ошибочным Это не учитывает тот факт, что вы можете получить несколько событий для одного блока текста (что имеет тенденцию происходить, когда у вас есть встроенные объекты).

Для того, чтобы мак убедитесь, что вы установили свойство IS_COALESCING true в XMLInputFactory перед созданием XMLEventReader (это свойство заставляет читателя объединять все смежные текстовые события в одно событие).

+0

Ok @jtahlborn. Я понял. Большое спасибо! :) – joseJv

+0

@joseJv - если это правильный ответ, вы должны отметить его как таковой. рад, что он работает на вас! – jtahlborn