Xml 使用StaX忽略注释

Xml 使用StaX忽略注释,xml,stax,xml-comments,Xml,Stax,Xml Comments,使用以下代码,我成功地读取了XML文件。然而,当注释出现在节点的中间时,读取器将丢弃节点的其余部分。例如: <text>thisismy<!--comment-->document</text> 这可能是代码的问题(您没有显示相关部分),而不是读者的问题。读者不会合并由注释分隔的字符部分,因此您必须为同一个“开始元素”处理多个字符事件谢谢。我想可能是这样的,所以开始这样做。我现在将字符复制到一个缓冲区,然后将其包装到END_元素部分。我觉得很难看,但它很管用

使用以下代码,我成功地读取了XML文件。然而,当注释出现在节点的中间时,读取器将丢弃节点的其余部分。例如:

<text>thisismy<!--comment-->document</text>

这可能是代码的问题(您没有显示相关部分),而不是读者的问题。读者不会合并由注释分隔的字符部分,因此您必须为同一个“开始元素”处理多个字符事件谢谢。我想可能是这样的,所以开始这样做。我现在将字符复制到一个缓冲区,然后将其包装到END_元素部分。我觉得很难看,但它很管用。谢谢你的确认。可惜它不支持stripComments模式。
try {
        XMLInputFactory factory = XMLInputFactory.newInstance();
        factory.setProperty("javax.xml.stream.isCoalescing", true);
        XMLEventReader eventReader =
                factory.createXMLEventReader(new FileReader(fileName));

        while(eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();

            switch(event.getEventType()) {

                case XMLStreamConstants.START_ELEMENT:
                    StartElement startElement = event.asStartElement();
                    String qName = startElement.getName().getLocalPart();

                    if (qName.equalsIgnoreCase("page")) {
                        page = new DocumentPage();
                        Iterator<Attribute> attributes = startElement.getAttributes();
                        while(attributes.hasNext())
                        {
                            Attribute attribute = attributes.next();
                            switch (attribute.getName().toString().toLowerCase()) {
                                case "index" :
                                    pageIndex = attribute.getValue();
                                    page.setPageIndex(pageIndex);
                                    break;