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();
}
}
}