1、读取xml
//1)创建xml解析器对象
SAXReader reader = new SAXReader(); //快速导包 shift+ctrl+o
//2)读取xml文件
Document doc = reader.read(new File("./src/contact.xml"));
2、使用dom4j读取xml的标签
* getRootElement(): 获取根标签
* getName(): 获取标签名称
* element("名称"): 获取第一个指定名称的子标签
* elements("名称"): 获取指定名称的所有的子标签
* elements(): 获取所有子标签
//1)创建xml解析器对象
SAXReader reader = new SAXReader(); // ctrl+2 放手 +l
//2)读取xml文件
Document doc = reader.read(new File("./src/contact.xml"));
//1.1 读取根标签
Element rootElem = doc.getRootElement();
System.out.println(rootElem);
//1.2 获取标签名称
System.out.println(rootElem.getName());
//1.3 获取第一个子标签(根据指定的名称获取第一个子标签)
Element conElem = rootElem.element("contact");
System.out.println(conElem);
System.out.println("==============");
//1.4 获取所有子标签(根据指定的名称获取所有同名子标签)
List list = rootElem.elements("contact");
//遍历List
//几种方式?
//1)传统for循环
//2)for-each循环
for(Element e: list){
System.out.println(e);
}
//3)迭代器
System.out.println("================");
//1.4 获取所有子标签(不指定名称)
List eList = rootElem.elements();
for(Element e:eList){
System.out.println(e);
}
System.out.println("===========");
//1.5获取孙标签
Element nameElem = rootElem.element("contact").element("name");
System.out.println(nameElem);
3、使用dom4j获取xml上的属性信息
//1)创建xml解析器
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml"));
/**
* 读取属性
* 注意:获取属性,必须先得到属性所在的标签
*/
Element conElem = doc.getRootElement().element("contact");
//1.1 在标签上获取属性值(根据属性名称获取对应的属性值)
String value = conElem.attributeValue("id");
System.out.println(value);
/**
* 练习: 拿到id=002属性
*/
Element conElem2 = (Element)doc.getRootElement().elements().get(1);
System.out.println(conElem2.attributeValue("id"));
//1.2 根据属性名称获取属性对象
//拿到标签对象
conElem = doc.getRootElement().element("contact");
//拿到属性对象
Attribute idAttr = conElem.attribute("id");
//通过属性对象拿到 属性名
String idName = idAttr.getName();
//通过属性对象拿到 属性值
String idValue = idAttr.getValue();
System.out.println(idName+"="+idValue);
System.out.println("===============");
//1.3 获取标签的所有属性对象
conElem = doc.getRootElement().element("contact");
List<Attribute> attrList = conElem.attributes();
for (Attribute attr : attrList) {
System.out.println(attr.getName()+"="+attr.getValue());
}
4、使用dom4j获取xml的文本信息
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml"));
/**
* 注意:
* 在xml文件中,空格和换行会作为xml的内容被解析到。
* xml中空格和换行和java代码中空格换行不一样。
* java代码中的空格和换行是没意义的,为了代码的格式格式好看而已。
*/
Element con = doc.getRootElement().element("contact");
System.out.println(con.getText());
/**
* 读取文本:
* 注意: 获取文本,要先获取文本所在的标签对象
*/
//1.1 拿到所在标签上的文本内容
Element nameElem = doc.getRootElement().
element("contact").element("name");
String content = nameElem.getText();
System.out.println(content);
//1.2 通过父标签获取指定子标签的文本内容
Element conElem = doc.getRootElement().element("contact");
content = conElem.elementText("gender");
System.out.println(content);