示例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()后的代码。
有效。 但它似乎不是答案。
版本兼容吗?
还有其他方法吗?