使用xstream,stax2,woodstox无法获得cdata结果

时间:2017-07-17 10:10:27

标签: java xml xstream stax woodstox

示例xml

<root>
  <first>
    <second><![CDATA[hello, world]]></second>
  </first>
<root>

我正在使用xstream(1.4.7),stax2-api(3.1.4),woodstox(5.0.3)。

@Test
    public void xmlInputFactoryTest() throws XMLStreamException, IOException {

        ClassPathResource resource = new ClassPathResource("/sample/input.xml");

        NameCoder nameCoder = new XmlFriendlyNameCoder();

        XMLInputFactory factory = XMLInputFactory.newInstance();
        XMLEventReader reader = factory.createXMLEventReader(resource.getInputStream());
        XMLStreamReader streamReader = StaxUtils.createEventStreamReader(reader);
        HierarchicalStreamReader hsr = new StaxReader(new QNameMap(), streamReader, nameCoder);
        write(hsr);
    }

    public void write(HierarchicalStreamReader hsr) {
        System.out.println(hsr.getNodeName() + ", " + hsr.getValue()); // should be print "hello,world" in second tag
        if (hsr.hasMoreChildren()) {
            hsr.moveDown();
            write(hsr);
        }
    }

这是我的示例测试代码

我无法在路径“root / first / second”中获得cdata字符串结果

我认为XMLInputFactory.newInstance()会将类影响到结果。

当我添加

factory.setProperty(XMLInputFactory.IS_COALESCING, true);

获取XMLInputFactory.newInstance()后的代码。

有效。 但它似乎不是答案。

版本兼容吗?

还有其他方法吗?

0 个答案:

没有答案