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日