java解析xml常用的几种方式、
2个回答
展开全部
各种方法都用过。现在总结一下。 经常记不住,要找资料。现在总结一下。> Everyday Italian Giada De Laurentiis 2005 30.00 ccccc Harry Potter J K. Rowling 2005 29.99 XQuery Kick Start James McGovern Per Bothner Kurt Cagle James Linn Vaidyanathan Nagarajan 2003 49.99 Learning XML Erik T. Ray 2003 39.95 package sort; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; public class D2 { /** * 直接使用DOM解析 * @param args * @throws Exception */ public static void main(String[] args) throws Exception{ DocumentBuilder sb = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document root = sb.parse(D2.class.getClassLoader().getResourceAsStream("NewFile.xml")); System.out.println(root.getChildNodes().item(0).getNodeName()); } } package sort; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl; public class D { /** * 使用SAX解析 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactoryImpl.newInstance(); SAXParser parser = factory.newSAXParser() ; parser.parse(D.class.getClassLoader().getResourceAsStream("NewFile.xml"), new DefaultHandler(){ @Override public void characters(char[] ch, int start, int length) throws SAXException { System.out.println("characters"); } @Override public void endDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("endDocument"); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { // TODO Auto-generated method stub System.out.println("endElement"); } @Override public void startDocument() throws SAXException { // TODO Auto-generated method stub System.out.println("startDocument"); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // TODO Auto-generated method stub System.out.println("startElement"); } }) ; } } package sort; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamReader; public class D3 { /** * 使用XMLStream解析 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { XMLInputFactory xmlFactor = XMLInputFactory.newFactory(); XMLStreamReader reader = xmlFactor.createXMLStreamReader(D3.class.getClassLoader().getResourceAsStream("NewFile.xml")); while(reader.hasNext()){ int point = reader.next() ; switch(point){ case XMLStreamReader.START_ELEMENT : System.out.println("start_element"); case XMLStreamReader.END_ELEMENT : // do something... } } } } package sort; import org.dom4j.Document; import org.dom4j.io.SAXReader; /** * 使用DOM4j XPATH解析XML (需要加入依赖jar文件) * @author zhoufeng * */ public class D4 { public static void main(String[] args) throws Exception{ SAXReader reader = new SAXReader() ; Document root = reader.read(D4.class.getClassLoader().getResourceAsStream("NewFile.xml")); /* 选择所有的cc节点 */ System.out.println(root.selectNodes("//cc").size());; /*选择所有的book节点,并且有子节点author的*/ System.out.println((root.selectNodes("//book[author]").size()));; /* 选择所有book节点,并且有属性category的 */ System.out.println((root.selectNodes("//book[@category]").size()));; /* 选择所有book节点,并且有子节点author值为James McGovern ,并且还有category属性节点值为WEB 下面的price节点*/ System.out.println(root.selectNodes("//book[author='James McGovern'][@category='WEB']/price").size());; } }
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询