为什么会发生
具有混合上下文的元素中的空白内容被视为重要内容。
如何修复
您可以将JAXB与StAX一起使用以支持此用例。使用StAX,您可以创建一个经过过滤的过滤器,
XMLStreamReader以便任何仅包含空格的字符串都不会报告为事件。下面是如何实现它的示例。
import javax.xml.bind.*;import javax.xml.stream.*;import javax.xml.transform.stream.StreamSource;public class Demo { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Root.class); XMLInputFactory xif = XMLInputFactory.newFactory(); XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource("src/forum22284324/input.xml")); xsr = xif.createFilteredReader(xsr, new StreamFilter() { @Override public boolean accept(XMLStreamReader reader) { if(reader.getEventType() == XMLStreamReader.CHARACTERS) { return reader.getText().trim().length() > 0; } return true; } }); Unmarshaller unmarshaller = jc.createUnmarshaller(); Root root = (Root) unmarshaller.unmarshal(xsr); }}


