java----JDOM解析XML
JDOM:
与DOM类似,基于树形结构
效率比DOM快
下载:
http://www.jdom.org/dist/binary/jdom-2.0.6.zip
导包导java中的工程目录
jdom-2.0.6.jar
使用
import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; public class Demo{ public static void main(String[] args) throws JDOMException, IOException { JDOMtest(); } private static void JDOMtest() throws JDOMException, IOException { //创建JDOM解析器 SAXBuilder builder = new SAXBuilder(); InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("com\\first\\person.xml"); //将文件加载到builder解析器中 Document build = builder.build(resourceAsStream); ArrayList<Person> personList = new ArrayList<>(); //获取根节点 //System.out.println(build.getRootElement().getName()); List<Element> children = build.getRootElement().getChildren(); Person person = null; for (int i = 0; i < children.size(); i++) { person = new Person(); String p_id = children.get(i).getAttributeValue("person_id"); person.setId(p_id); List<Element> next_childern = children.get(i).getChildren(); for (int j = 0; j < next_childern.size(); j++) { if ("name".equals(next_childern.get(j).getName())){ String name = next_childern.get(j).getValue(); //也是获取文本内容 //String name = next_childern.get(j).getText() person.setName(name); } if ("age".equals(next_childern.get(j).getName())){ String age = next_childern.get(j).getValue(); person.setAge(age); } } personList.add(person); } personList.forEach((p)-> System.out.println(p)); } } class Person{ private String name; private String age; private String id; public void setName(String name) { this.name = name; } public void setAge(String age) { this.age = age; } public void setId(String id) { this.id = id; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", id='" + id + '\'' + '}'; } }
XML文件
<?xml version="1.0" encoding="UTF-8" ?> <Person> <person person_id="p1"> <name>zy</name> <age>18</age> </person> <person person_id="p2"> <name>zt</name> <age>20</age> </person> </Person>