Stax解析XML的简单实例
来源:互联网 发布:网络匿名短信免费版 编辑:程序博客网 时间:2024/06/05 14:48
关键字解释:
Stax:Streaming API for XML(用于读写XML的流接口)
xml文件代码:
<?xml version="1.0"?> <service> <item> <task>test</task> <strategy>repeat</strategy> </item> <item> <task>WebpageRespTask</task> <strategy>single</strategy> </item> </service>
Java代码:Junit4 testcase:TestStax
package unit_test;import java.io.InputStream;import javax.xml.stream.XMLEventReader;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamConstants;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.events.XMLEvent;import org.junit.Test;public class TestStax {//基于光标的解析方式@Testpublic void cursorBased() { XMLInputFactory factory = XMLInputFactory.newInstance(); InputStream is = null; is = TestStax.class.getClassLoader().getResourceAsStream("service.xml"); XMLStreamReader reader = null; try { reader = factory.createXMLStreamReader(is);while (reader.hasNext()) { int type = reader.next();// System.out.println(reader.next());// if (type==XMLStreamConstants.START_DOCUMENT||type==XMLStreamConstants.END_DOCUMENT) {// System.out.println(reader..toString());//} if(type==XMLStreamConstants.START_ELEMENT||type==XMLStreamConstants.END_ELEMENT){System.out.println(reader.getName().toString());} else if(type==XMLStreamConstants.CHARACTERS) { System.out.println(reader.getText().toString().trim());} }} catch (XMLStreamException e) {e.printStackTrace();} }//基于迭代的解析方式@Testpublic void iteratorBased(){ XMLInputFactory factory = XMLInputFactory.newInstance(); InputStream is = null; is = TestStax.class.getClassLoader().getResourceAsStream("service.xml"); XMLEventReader reader = null; try { reader = factory.createXMLEventReader(is);while (reader.hasNext()) { XMLEvent event = reader.nextEvent(); if (event.isStartElement()) {String name = event.asStartElement().getName().toString();if (name.equals("strategy")) {System.out.println(reader.getElementText());}} }} catch (XMLStreamException e) {e.printStackTrace();} }
//基于Xpath的形式,解析之前必须先加载整个Dom...DOM--->Document Object Model
@Test public void testXpath() { try { System.out.println("-------------------------------textXpath----------------------------------------"); InputStream is = TestStax.class.getClassLoader().getSystemResourceAsStream("service.xml"); DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document dom = db.parse(is); XPath xpath = XPathFactory.newInstance().newXPath(); String xpStr = "//item[@id='task1']"; NodeList list = (NodeList) xpath.evaluate(xpStr, dom, XPathConstants.NODESET); System.out.println(list.getLength()); for (int index=0;index<list.getLength();index++) { Element ele = (Element) list.item(index); //System.out.println(ele.getNodeName()+" :"+ele.getNodeValue()); System.out.println(ele.getElementsByTagName("task").item(0).getTextContent()); } System.out.println("-----------------------------------------------------------------------"); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (XPathExpressionException e) { // TODO Auto-generated catch block e.printStackTrace(); } }<pre name="code" class="java"> <pre name="code" class="java">//通过XMLStreamWriter对象来写入一个xml文档
@Testpublic void writeXml(){try {OutputStream os = new FileOutputStream("person.xml");XMLStreamWriter xmlSW = XMLOutputFactory.newInstance().createXMLStreamWriter(os);//XMLStreamWriter xmlSW = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); //写入xml文档的第一行xmlSW.writeStartDocument("GBK", "1.0"); xmlSW.writeEndDocument(); //写入xml节点 xmlSW.writeStartElement("person"); xmlSW.writeStartElement("perName"); xmlSW.writeCharacters("wuwh"); xmlSW.writeEndElement(); xmlSW.writeEndElement(); //在此方法之前,输出的内容都保存在cache中, //执行此方法会把存在缓存中数据实际输出。 xmlSW.flush(); xmlSW.close(); } catch (XMLStreamException e) {e.printStackTrace();} catch (FactoryConfigurationError e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}
0 0
- Stax解析XML的简单实例
- XML的解析方式(DOM,SAX,StAX)
- stax解析XML的一个例子
- STAX XML 解析
- 使用 StAX 解析 XML
- JAVA解析XML(StAX)
- 使用 StAX 解析 XML
- 使用Stax解析XML
- STAX XML 解析
- stax方法解析XML
- Stax 解析xml文件
- stax 解析xml
- Stax解析XML
- 使用StAX解析XML
- Java XML解析之 StAX
- xml解析 StAX lterator读取
- stax方式解析xml文档
- 简说XML的解析方式(DOM,SAX,StAX)
- Jlink_V8灯不亮USB无法识别及克隆版问题解决方法(win7 64位系统下亲测可用)
- 我的Java学习推荐书目
- 枚举注册表子键
- 运维人员具备的技能
- MSC Visual Nastran v2004 For Windows 1CD(改进表面建网格允许多头管在不等表面之间做网格)
- Stax解析XML的简单实例
- MATLAB画系统函数零极点以及幅频特性
- Mac下利用Octopress和Github搭建自己的技术博客
- 三月份找工作的总结和对新工作的期望
- js中的数组
- [LeetCode] Longest Valid Parentheses
- C++ 对象的内存布局
- springMVC+mongodb整合(morphia)
- 安卓键盘属性windowSoftInputMode透析