多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Stax解析XML的簡單實例

Stax解析XML的簡單實例

來源:程序員人生   發布時間:2015-05-29 08:34:20 閱讀次數:2983次

關鍵字解釋:

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 { //基于光標的解析方式 @Test public 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(); } } //基于迭代的解析方式 @Test public 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對象來寫入1個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文檔的第1行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();}}


}





生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线亚州 | 国产精品久久久久天天影视 | 伊人亚洲综合网成人 | 国产成人精品免费大全 | 美女网站在线观看视频免费的 | 日本欧美一区二区三区乱码 | 宇都宫紫苑在线播放 | 一区二区视频免费观看 | 欧美日韩激情一区二区三区 | 无国产精品白浆免费视 | 中文字幕国产欧美 | 另类黄色 | 欧美一级视频免费 | 中文字幕成人在线观看 | 成人男女啪啪免费观看网站 | 日本a级毛片免费视频播放 日本a毛片 | 国产精品久久久久国产精品三级 | 免费午夜在线视频 | h在线看 | 国产v国产v片大片线观看网站 | 国产精品福利片免费看 | 亚洲免费网址 | 国内精品久久久久久久亚洲 | 国产乱小说 | 亚洲黄色第一页 | 欧美日韩在线观看免费 | 国产性色视频 | 欧美国产日韩一区二区三区 | 一级欧美一级日韩 | 国产v亚洲v天堂无码 | 精品成人一区二区三区免费视频 | 欧美精品国产一区二区三区 | 国产三级精品三级在线专区1 | 亚洲精品美女久久久aaa | 国产午夜精品久久久久小说 | 国产在线观看成人免费视频 | 欧美色图天堂网 | 日韩欧美亚洲国产一区二区三区 | 欧美综合在线视频 | 亚洲高清视频在线播放 | 国产日韩一区二区 |