Java解析XML

import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class ParserXML {
 public static final String xmlPath = "D:/JAVA_HOME/pom.xml";

 @SuppressWarnings("unchecked")
 public static SimplePom parseXmlToSimplePOM() {
  File xmlFile = new File(xmlPath);
  SAXReader reader = new SAXReader();
  SimplePom simplePom = null;
  try {
   Document document = reader.read(xmlFile);
   Element root = document.getRootElement();
   simplePom = SimplePom.class.newInstance();
   Field[] fields = SimplePom.class.getFields();
   for (int i = 0; i < fields.length; i++) {
    if (fields[i].getType().getSimpleName().equals("String")) {
     Element element = root.element(fields[i].getName());
     if (element != null) {
      fields[i].set(simplePom, element.getTextTrim());
     }
    }
   }
   fields = null;

   Iterator<Element> iterator = root.element("dependencies").elementIterator("dependency");
   while (iterator.hasNext()) {
    Element edependency = iterator.next();
    Dependency dependency = Dependency.class.newInstance();
    fields = Dependency.class.getFields();
    for (int i = 0; i < fields.length; i++) {
     Element element = edependency.element(fields[i].getName());
     if (element != null) {
      fields[i].set(dependency, element.getTextTrim());
     }
    }
    Method method = SimplePom.class.getMethod("addDependency",Dependency.class);
    method.invoke(simplePom, dependency);
   }
  } catch (DocumentException e) {
   e.printStackTrace();
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (SecurityException e) {
   e.printStackTrace();
  } catch (NoSuchMethodException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
  return simplePom;
 }

 public static void parseXmlToMap() {
  File xmlFile = new File(xmlPath);
  SAXReader reader = new SAXReader();
  try {
   Document document = reader.read(xmlFile);
   Element root = document.getRootElement();
   Element version = root.element("version");
   System.out.println("groupId:" + root.element("groupId").getText());
   System.out.println("artifactId:"+ root.element("artifactId").getText());
   System.out.println("packaging:" + root.element("packaging").getText());
   System.out.println("version:" + root.element("version").getText());
   System.out.println("name:" + root.element("name").getText());
   System.out.println("url:" + root.element("url").getText());

   Iterator<Element> iterator = root.element("dependencies")
     .elementIterator("dependency");
   while (iterator.hasNext()) {
    Element edependency = iterator.next();
    Iterator iterInner = edependency.elementIterator();
    while (iterInner.hasNext()) {
     Element elementInner = (Element) iterInner.next();
     if (elementInner.getName().equals("version")) {
      String vsDpendency = elementInner.getText();
      if ("${project.version}".equals(vsDpendency)) {
       vsDpendency = version.getText();
      }
      System.out
        .println("dependency->version=" + vsDpendency);
     }
    }
   }
  } catch (DocumentException e) {
   e.printStackTrace();
  }
 }

 public static void main(String arge[]) {
  System.out.println(parseXmlToSimplePOM().dependencys.size());
  parseXmlToMap();
 }
}

 

----------------------使用返回Entity对象的话,需要增加两个Entity-----------------

 

public class Dependency {
 public String groupId;
 public String artifactId;
 public String version;
}

 

public class SimplePom {
 public String modelVersion;
 public String groupId;
 public String artifactId;
 public String packaging;
 public String version;
 public String name;
 public String url;
 public List<Dependency> dependencys = new ArrayList<Dependency>();

 public void addDependency(Dependency dependency) {
  dependencys.add(dependency);
 }

 /**
  * 获取基本的版本号(去掉快照标示)
  *
  * @return
  */
 public String getSimpleVersion() {
  if (version != null && version.indexOf("") > 0) {
   return version.replace("-SNAPSHOT", "");
  }
  return version;
 }
}

 

 

# 使用DOM 解析XML

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

/**
 * 使用DOM技术解析XML
 * 
 * @author kevin Luan
 * 
 */
public class ParserXML {
	public static final String FILENAME = "D:\\Software\\TestNamespace\\DataExtraction\\NewFile.xml";

	public static void main(String arge[]) {
		ParserXML xml = new ParserXML();
		xml.run();
	}

	public void run() {
		try {
			File f = new File("NewFile.xml");
			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document doc = builder.parse(f);
			NodeList nl = doc.getElementsByTagName("user");
			for (int i = 0; i < nl.getLength(); i++) {
				System.out.println("姓名:" + doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
				System.out.println("年龄:" + doc.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
			}
		} catch (Exception e) {
			e.printStackTrace();

		}
	}
}


 

你可能感兴趣的:(xml)