import java.io.FileNotFoundException; import java.io.FileReader; import javax.xml.stream.StreamFilter; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; /** * StreamFilter示例程序 * * 使用过滤器对元素进行过滤 */ public class StaxStreamFilter implements StreamFilter { @Override public boolean accept(XMLStreamReader reader) { try { while (reader.hasNext()) { int event = reader.next(); // 只接受元素的开始 if (event == XMLStreamConstants.START_ELEMENT) { // 只保留user元素 if ("user".equalsIgnoreCase(reader.getLocalName())) { return true; } } if (event == XMLStreamConstants.END_DOCUMENT) { return true; } } } catch (XMLStreamException e) { e.printStackTrace(); } return false; } public XMLStreamReader getFilteredReader() { String xmlFile = "src/user.xml"; XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader; try { reader = factory.createXMLStreamReader(new FileReader(xmlFile)); // 创建带有过滤器的读取器实例 XMLStreamReader freader = factory.createFilteredReader(reader, this); return freader; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (XMLStreamException e) { e.printStackTrace(); } return null; } public void listUsers() { XMLStreamReader reader = getFilteredReader(); try { // 列出所有用户的名称 while (reader.hasNext()) { // 过滤工作已交由过滤器完成,这里不需要再做 System.out.println("Name=" + reader.getAttributeValue(null, "name")); if (reader.getEventType() != XMLStreamConstants.END_DOCUMENT) { reader.next(); } } reader.close(); } catch (XMLStreamException e) { e.printStackTrace(); } } /** * 测试 */ public static void main(String[] args) { StaxStreamFilter t = new StaxStreamFilter(); 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日