import java.io.FileNotFoundException; import java.io.FileReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.util.StreamReaderDelegate; /** * 测试StreamReaderDelegate */ public class StaxStreamDelegate { public XMLStreamReader getDelegateReader() { String xmlFile = "src/user.xml"; XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader; try { reader = new StreamReaderDelegate(factory.createXMLStreamReader(new FileReader(xmlFile))) { // 重写(Override)next()方法,增加过滤逻辑 @Override public int next() throws XMLStreamException { while (true) { int event = super.next(); // 保留用户元素的开始 if (event == XMLStreamConstants.START_ELEMENT && "user".equalsIgnoreCase(getLocalName())) { return event; } else if (event == XMLStreamConstants.END_DOCUMENT) { return event; } else { continue; } } } }; return reader; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (XMLStreamException e) { e.printStackTrace(); } return null; } public void listUsers() { XMLStreamReader reader = this.getDelegateReader(); try { while (reader.hasNext()) { reader.next(); if (reader.getEventType() != XMLStreamConstants.END_DOCUMENT) { // 列出用户的名称和年龄 System.out.println("Name=" + reader.getAttributeValue(null, "name") + ";age=" + reader.getAttributeValue(null, "age")); } } reader.close(); } catch (XMLStreamException e) { e.printStackTrace(); } } public static void main(String[] args) { StaxStreamDelegate t = new StaxStreamDelegate(); t.listUsers(); } }


1443251642 LV1
2022年12月19日
PaymentCodeSystem LV11
2022年8月4日
likaiyu
2021年7月31日
暂无贡献等级
329512801 LV28
2021年7月8日
张洪 LV1
2021年7月1日
迷瞪的一批 LV6
2021年3月2日
我是你唯一的执着 LV4
2020年6月16日
raccoonxx LV2
2020年6月4日
0312wangchen LV26
2019年10月31日
hubugai1 LV11
2018年8月28日