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 LV10
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日