XML STAX样例
2013-07-01 13:07
99 查看
package xml.stax; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.EventFilter; import javax.xml.stream.FactoryConfigurationError; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import javax.xml.stream.XMLStreamWriter; import javax.xml.stream.events.XMLEvent; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactoryConfigurationError; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class TestSTAX { @Test public void testXMLStreamReader() throws IOException { try { XMLInputFactory factory = XMLInputFactory.newFactory(); InputStream in = TestSTAX.class.getClassLoader().getResourceAsStream("books.xml"); // BufferedReader r = new BufferedReader(new InputStreamReader(in)); // String tmp = null; // in.mark(0); // while((tmp=r.readLine())!=null){ // System.out.println(tmp); // } // in.reset(); XMLStreamReader reader = factory.createXMLStreamReader(in); while (reader.hasNext()) { int type = reader.next(); if(type==XMLStreamConstants.START_ELEMENT){ System.out.print(reader.getName()); System.out.println("dddddddd"+reader.getElementText()); }else if(type==XMLStreamConstants.CHARACTERS){ System.out.println(); }else if(type==XMLStreamConstants.END_ELEMENT){ System.out.println(reader.getName()); } } reader.close(); } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (XMLStreamException e) { e.printStackTrace(); } } @Test public void testXMLEventReader(){ try { XMLInputFactory factory = XMLInputFactory.newFactory(); InputStream in = TestSTAX.class.getClassLoader().getResourceAsStream("books.xml"); XMLEventReader reader = factory.createXMLEventReader(in); while(reader.hasNext()){ XMLEvent event = reader.nextEvent(); if(event.isStartElement()){ String name = event.asStartElement().getName().toString(); // if("book".equals(name)){ // System.out.println(reader.getElementText()); // } if("title".equals(name)){ System.out.println(reader.getElementText()); }else if("price".equals(name)){ System.out.println(reader.getElementText()); } } } } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (XMLStreamException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testXMLFilteredReader(){ try { XMLInputFactory factory = XMLInputFactory.newFactory(); InputStream in = TestSTAX.class.getClassLoader().getResourceAsStream("books.xml"); XMLEventReader eventReader = factory.createXMLEventReader(in); XMLEventReader reader = factory.createFilteredReader(eventReader, new EventFilter() { @Override public boolean accept(XMLEvent event) { return false; } }); while(reader.hasNext()){ XMLEvent event = reader.nextEvent(); if(event.isStartElement()){ String name = event.asStartElement().getName().toString(); // if("book".equals(name)){ // System.out.println(reader.getElementText()); // } if("title".equals(name)){ System.out.println(reader.getElementText()); }else if("price".equals(name)){ System.out.println(reader.getElementText()); } } } } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (XMLStreamException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Test public void testXPath(){ try { InputStream in = TestSTAX.class.getClassLoader().getResourceAsStream("books.xml"); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder db = factory.newDocumentBuilder(); Document doc = db.parse(in); XPathFactory xPathFactory = XPathFactory.newInstance(); XPath xpath = xPathFactory.newXPath(); String expression = "//book[@category='WEB']"; NodeList nodeList = (NodeList)xpath.evaluate(expression,doc,XPathConstants.NODESET); for(int i = 0 ; i< nodeList.getLength();i++){ Element ele = (Element)(nodeList.item(i)); NodeList tiel = ele.getElementsByTagName("title"); Element e = (Element) tiel.item(0); System.out.println(e.getTextContent()); } } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (XPathExpressionException e) { e.printStackTrace(); } } @Test public void testXMLStreamWriter(){ try { XMLOutputFactory factory = XMLOutputFactory.newFactory(); XMLStreamWriter writer = factory.createXMLStreamWriter(System.out); String ns= "http://www.song.com"; writer.writeStartDocument("UTF-8","1.0"); writer.setDefaultNamespace("http://defa.com"); writer.writeDefaultNamespace("http://defa.com"); writer.writeNamespace("ns", ns); writer.setPrefix("ns", ns); writer.writeStartElement("ns","this",ns); writer.writeCharacters("conten22t"); writer.writeStartElement("ns","sdfsdfds",ns); writer.writeCharacters("content"); writer.writeEndElement(); writer.writeEndElement(); writer.writeEndDocument(); writer.flush(); writer.close(); } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (XMLStreamException e) { e.printStackTrace(); } } public static void main(String[] args) { new TestSTAX().test(); } @Test public void test(){ try { InputStream in = TestSTAX.class.getClassLoader().getResourceAsStream("books.xml"); XMLInputFactory factory = XMLInputFactory.newFactory(); Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in); XPath xPath = XPathFactory.newInstance().newXPath(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8"); String expression = "//book[@category='WEB']/price"; NodeList nodelist = (NodeList)xPath.evaluate(expression, doc,XPathConstants.NODESET); Element price = (Element)(nodelist.item(0)); price.setTextContent("111111111111"); transformer.transform(new DOMSource(doc), new StreamResult(System.out)); } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerFactoryConfigurationError e) { e.printStackTrace(); } catch (XPathExpressionException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } }
相关文章推荐
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- [原创]java局域网聊天系统
- java很神奇 用swing制作欢迎屏幕
- java自动生成验证码插件-kaptcha
- ITeye上“10个人,8个人不会解释这个问题”的帖子
- Java IO与NIO的一些文件拷贝测试
- Java反射随记
- Java简单字符串插值实现
- String.intern
- 学习prefuse
- As3.0 xml + Loader应用代码
- 网马生成器 MS Internet Explorer XML Parsing Buffer Overflow Exploit (vista) 0day
- ext读取两种结构的xml的代码
- Java Runtime Environment 5.0 Update 12 下载
- asp下查询xml的实现代码
- sqlserver FOR XML PATH 语句的应用
- 使用sp_xml_preparedocument处理XML文档的方法