Java 解析xml stax文件中的特殊字符

Java 解析xml stax文件中的特殊字符,java,parsing,stax,Java,Parsing,Stax,我有以下问题: 原始RSS文件的一部分: 我可以在这个标签中获取数据 p我无法获取此/p中的数据 当我使用StAX解析器读取文件时,会使用特殊字符“<;”。它会自动转换为“” 这是我的代码: public Feed readFeed() { Feed feed = null; try { boolean isFeedHeader = true; String description = ""; String title = ""; XMLInputFactory inp

我有以下问题:

原始RSS文件的一部分:


我可以在这个标签中获取数据
p我无法获取此/p中的数据
当我使用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;} 

我遵循以下说明:

教程有缺陷。它没有考虑到一个文本块可以获得多个文本事件的事实(这通常发生在嵌入实体的情况下)


为了让您的生活更轻松,请确保在创建XMLEventReader之前在XMLInputFactory上将属性设置为true(此属性强制读取器将所有相邻的文本事件合并为单个事件)。

如何使用stax解析器读取此文件(相关代码)?那么(示例pls)新的xml文件看起来是什么样的呢?那么您写入新文件的代码就有缺陷了。也许如果你把它展示出来,我们可以帮助你确定第二个
不是应该是一个像
这样的结束标记吗?Ok@jtahlborn。我得到了它。非常感谢你!:)@如果这是正确的答案,你应该把它标记为正确答案。很高兴它对你有用!