使用 StAX 解析 xml:未获得大内容标签

Parsing xml with StAX: not getting a large content tag

我正在使用 StAX 解析我的 xml 文件,问题是当标签内容很大时,StAX 无法提供全部内容。 这是我的 xml 文档的一部分,payload 标签的内容要大得多,无法在 SOF 中全部打印出来:

<payload>{\"id\": \"ENTITY24\",\"attr1\": {\"type\": \"sensor\",\"type\": \"type1\",\"value\": \"val1\",\"metadata\": {}}}</payload>

这是我解析它的代码的一部分:

if(startElement.getName().getLocalPart().equals("payload")){
    xmlEvent = xmlEventReader.nextEvent();
    if(xmlEvent.isCharacters()){
       setPayload(xmlEvent.asCharacters().getData());                           
    }
}

知道为什么 StAX 无法提供整个标签内容吗? 谢谢并致以最诚挚的问候。

您应该在其他事件之间串联所有 isCharacters 事件,或者设置 IS_COALESCING 属性。

就像 SAX 一样,STAX 可能会为您提供单个 运行 个字符作为多个事件。