java解析XML

来源:互联网 发布:网络直播问题 编辑:程序博客网 时间:2024/06/08 07:04

三种方法的介绍:

http://www.ibm.com/developerworks/cn/xml/dm-1208gub/index.html

XPATH参考:

http://www.ibm.com/developerworks/cn/xml/x-javaxpathapi.html

http://blog.csdn.net/jefferxun1/article/details/7805062


SAX参考:

1.一些概念:http://baike.baidu.com/view/4180507.htm

2.例子:http://blog.csdn.net/redarmy_chen/article/details/12951649

3.例子:http://www.cnblogs.com/avenwu/archive/2012/01/20/2327749.html


SAX的例子:

private static class ServerConfigHandler extends DefaultHandler{private String serverId;public String getServerId(){return serverId;}@Overridepublic void startDocument()throws SAXException {System.out.println("start parsing document...");}@Overridepublic void endDocument()throws SAXException {System.out.println("End");}//private boolean title=false;@Overridepublic void startElement(String uri, String localName, String qName, Attributes atts)                            throws SAXException{System.out.println("start element "+qName);if(atts!=null){System.out.println("attribute.description:"+atts.getValue("description"));}}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException{System.out.println("end element "+qName);}@Overridepublic void characters(char[] ch, int start,int length){String temp=new String(ch,start,length);System.out.println("characters:"+temp);}}private static void parseXml2(){ServerConfigHandler handler=new ServerConfigHandler();try{XMLReader parser= XMLReaderFactory.createXMLReader();parser.setContentHandler(handler);parser.parse(pathPrefix+serverXmlFile);}catch(IOException e){System.err.println("file open error" + serverXmlFile);}catch(SAXException e){System.err.println("file parser error" + serverXmlFile);}serverId=handler.getServerId();System.out.println("server id "+serverId);}


DOM的例子:

private static void parseXml1(){Document document=null;DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();try{DocumentBuilder builder = builderFactory.newDocumentBuilder();document = builder.parse(new File(pathPrefix+serverXmlFile));}catch(ParserConfigurationException e){System.err.println("parser configuration error");e.printStackTrace();}catch(IOException e){System.err.println("file open error" + serverXmlFile);}catch(SAXException e){System.err.println("file parser error" + serverXmlFile);}Element rootElement = document.getDocumentElement();NodeList nodes = rootElement.getChildNodes();for (int i=0;i< nodes.getLength();i++){Node node = nodes.item(i);if(node.getNodeType()==Node.TEXT_NODE){continue;}System.out.println("node.type:"+node.getNodeType());System.out.println("node.name:"+node.getNodeName());System.out.println("node.value:"+node.getNodeValue());System.out.println("node.textContent:"+node.getTextContent());if(node.getNodeType()==Node.ELEMENT_NODE){Element element=(Element) node;System.out.println("node.description:"+element.getAttribute("description"));}}NodeList nodeList = rootElement.getElementsByTagName("service_id");if(nodeList.getLength()!=1){System.err.println("muliply server_id in "+ serverXmlFile);System.exit(1);}Node node=nodeList.item(0);serverId=node.getTextContent();System.out.println("server id "+serverId);}

xpath例子:

private static void parseXml3(){try{DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setNamespaceAware(true);DocumentBuilder builder = factory.newDocumentBuilder();Document doc = builder.parse(pathPrefix+serverXmlFile);XPathFactory xfactory = XPathFactory.newInstance();XPath xpath = xfactory.newXPath();XPathExpression expr = xpath.compile("//service_id");XPathExpression expr2= xpath.compile("//service_id/text()");Object result = expr.evaluate(doc,XPathConstants.NODESET);Object result2= expr2.evaluate(doc,XPathConstants.STRING);NodeList nodes = (NodeList)result;for(int i=0;i<nodes.getLength();i++){System.out.println(nodes.item(0).getNodeName());System.out.println(nodes.item(0).getNodeValue());}serverId=(String)result2;System.out.println("server id "+serverId);if(nodes.getLength()>1){System.err.println("muliply server_id in "+ serverXmlFile);System.exit(1);}Node node=nodes.item(0);serverId=node.getTextContent();System.out.println("server id "+serverId);}catch(ParserConfigurationException e){System.err.println("parser configration exception");e.printStackTrace();}catch(Exception e){System.err.println("");e.printStackTrace();}}


0 0
原创粉丝点击