java学习是xml解析

来源:互联网 发布:python 里的key 编辑:程序博客网 时间:2024/04/26 05:02

简单实现xml解析的四种方法:

方法一:

package Ray.xml;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;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 TestXML2 {public static void main(String[] args) {DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();try {DocumentBuilder document = documentBuilderFactory.newDocumentBuilder();Document parse = document.parse("hello.xml");NodeList element = parse.getElementsByTagName("student");for(int i = 0;i<element.getLength();i++){//System.out.println(element.item(i));Node item = element.item(i);Element e = (Element)item;String attribute = e.getAttribute("id");System.out.println(attribute);Element name = (Element) e.getElementsByTagName("name").item(0);Element gender =(Element) e.getElementsByTagName("gender").item(0);Element score =(Element) e.getElementsByTagName("score").item(0);Element course =(Element) e.getElementsByTagName("course").item(0);System.out.println(name.getTagName()+"-------"+name.getTextContent());System.out.println(gender.getTagName()+"------"+gender.getTextContent());System.out.println(score.getTagName()+"-----"+score.getTextContent());System.out.println(course.getTagName()+"-------"+course.getTextContent());System.out.println("---------------------");}} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
方法二:使用递归
package Ray.xml;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class TestXML3 {public static void main(String[] args) {DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();try {DocumentBuilder dBuilder = documentBuilderFactory.newDocumentBuilder();Document parse = dBuilder.parse("hello.xml");Element document= parse.getDocumentElement();parseXml(document);} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void parseXml(Element ele) {System.out.print("<");System.out.print(ele.getTagName());if(ele.hasAttributes()){NamedNodeMap attrs = ele.getAttributes();for(int i = 0;i<attrs.getLength();i++){Attr attr = (Attr) attrs.item(i);System.out.print(attr+" ");}}System.out.print(">");NodeList childNodes = ele.getChildNodes();for(int i=0;i<childNodes.getLength();i++){Node item = childNodes.item(i);if(item.getNodeType()==item.ELEMENT_NODE){parseXml((Element)item);}else{System.out.print(item.getTextContent());}}System.out.print("</"+ele.getTagName()+">");}}
方法三:使用dom4j包
package Ray.xml;
import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class TestXml4 {public static void main(String[] args) {SAXReader saxReader =new SAXReader();try {Document document = saxReader.read("hello.xml");Element ele = document.getRootElement();List elements = ele.elements();/*for(int i =0;i<elements.size();i++){Element stu = (Element)elements.get(i);Attribute attribute = stu.attribute("id");System.out.println(attribute.getName()+"-----"+attribute.getValue());}*/Iterator elIterator = ele.elementIterator();while(elIterator.hasNext()){Element next = (Element) elIterator.next();Attribute attribute = next.attribute("id");System.out.println(attribute.getName()+"-"+attribute.getValue());List<Element> element = next.elements();for(Element list:element){System.out.println(list.getName()+"----"+list.getStringValue());}}} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}


package Ray.xml;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;/** *  * @author Marie * */public class TestXML {public static void main(String[] args)  {DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder;try {dBuilder = documentBuilderFactory.newDocumentBuilder();Document parse = dBuilder.parse("hello.xml");NodeList childNodes = parse.getChildNodes();Node scores = childNodes.item(2);NodeList childNodes2 = scores.getChildNodes();for(int i =0;i<childNodes2.getLength();i++){Node node = childNodes2.item(i);if(node.getNodeType()==node.ELEMENT_NODE){NamedNodeMap attributes = node.getAttributes();System.out.println(attributes.getNamedItem("id").getNodeValue());NodeList childNodes3 = node.getChildNodes();for(int j =0;j<childNodes3.getLength();j++){Node item = childNodes3.item(j);if(item.getNodeType()==item.ELEMENT_NODE){System.out.println(item.getNodeName()+"----"+item.getTextContent());}}}}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}