小兔网

先概括,再以代码形式给出。


获取节点:

Iterator Element.nodeIterator(); //获取当前标签节点下的所有子节点

获取 标签:

Element Document.getRootElement(); //获取xml文档的根标签

Element ELement.element("标签名") //指定名称的第一个子标签

Iterator<Element>Element.elementIterator("标签名");// 指定名称的所有子标签

List<Element> Element.elements(); //获取所有子标签

获取属性:

String Element.attributeValue("属性名") //获取指定名称的属性值

Attribute Element.attribute("属性名");//获取指定名称的属性对象

Attribute.getName() //获取属性名称

Attibute.getValue() //获取属性值

List<Attribute> Element.attributes(); //获取所有属性对象.推荐使用方案。

Iterator<Attribute> Element.attibuteIterator(); //获取所有属性对象

获取文本:

Element.getText(); //获取当前标签的文本

Element.elementText("标签名")//获取当前标签的指定名称的子标签的文本内容

案例:


import java.io.File;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;import org.junit.Test;/** * 第二个dom4j读取xml文件内容 * 节点 * 标签 * 属性 * 文本 * @author APPle * */public class Demo2 {/** * 得到节点信息 */@Testpublic void test1() throws Exception{//1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("./src/contact.xml"));//2.nodeIterator: 得到当前节点下的所有子节点对象(【不包含孙以下的节点】)Iterator<Node> it = doc.nodeIterator();//返回的是一个迭代器对象,迭代器里面存放的就是Node,给出泛型为Nodewhile(it.hasNext()){//判断是否有下一个元素Node node = it.next();//取出元素String name = node.getName();//得到节点名称//System.out.println(name);//System.out.println(node.getClass());//继续取出其下面的子节点//只有【标签节点】才有子节点//判断当前节点是否是标签节点if(node instanceof Element){Element elem = (Element)node;//node是Node类型的,因此要向下转型Iterator<Node> it2 = elem.nodeIterator();while(it2.hasNext()){Node n2 = it2.next();System.out.println(n2.getName());}}}}/** * 遍历xml文档的所有节点 * @throws Exception */@Testpublic void test2() throws Exception{//1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("./src/contact.xml"));//得到根标签。contactListElement rooElem = doc.getRootElement();getChildNodes(rooElem);}/** * 获取 传入的标签下的所有子节点。Element elem只有Element标签才有子节点 * @param elem */private void getChildNodes(Element elem){System.out.println(elem.getName());//获取到了根标签的名称//得到子节点Iterator<Node> it = elem.nodeIterator();while(it.hasNext()){Node node = it.next();//1.判断是否是标签节点if(node instanceof Element){Element el = (Element)node;//递归getChildNodes(el);}};}/** * 获取标签 */@Testpublic void test3() throws Exception{//1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("./src/contact.xml"));//2.得到根标签Element  rootElem = doc.getRootElement();//得到标签名称String name = rootElem.getName();System.out.println(name);//contactList//3.得到当前标签下指定名称的【第一个】【子】标签/*Element contactElem = rootElem.element("contact");System.out.println(contactElem.getName());*///4.得到当前标签下指定名称的所有子标签,指定了contact名称,就得到这个名称的所有同名的标签//这里制定了名称,有局限性/*Iterator<Element> it = rootElem.elementIterator("contact");while(it.hasNext()){Element elem = it.next();System.out.println(elem.getName());}*///5.得到当前rootElem标签下的的所有子标签对象,这里会拿出所有子标签对象。推荐使用。List<Element> list = rootElem.elements();//遍历List的方法//1)传统for循环  2)增强for循环 3)迭代器/*for(int i=0;i<list.size();i++){Element e = list.get(i);System.out.println(e.getName());}*/for(Element e:list){System.out.println(e.getName());}/*Iterator<Element> it = list.iterator(); //ctrl+2 松开 lwhile(it.hasNext()){Element elem = it.next();System.out.println(elem.getName());}*///获取更深层次的标签(方法只能一层层地获取)Element nameElem = doc.getRootElement().element("contact").element("name");System.out.println(nameElem.getName());}/** * 获取属性 */@Testpublic void test4() throws Exception{//1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("./src/contact.xml"));//获取属性:(先获得属性所在的标签对象,然后才能获取属性)//1.得到标签对象Element contactElem = doc.getRootElement().element("contact");//2.得到属性//2.1  得到指定名称的属性值/*String idValue = contactElem.attributeValue("id");System.out.println(idValue);*///2.2 得到指定属性名称的属性对象Attribute/*Attribute idAttr = contactElem.attribute("id");//getName: 属性名称    getValue:属性值System.out.println(idAttr.getName() +"=" + idAttr.getValue());*///2.3 得到【所有】属性对象,返回LIst集合。不需要知道属性名称和多少个属性/*List<Attribute> list = contactElem.attributes();//推荐使用方案//遍历属性for (Attribute attr : list) {System.out.println(attr.getName()+"="+attr.getValue());}*///2.4 得到【所有属性】对象,返回迭代器Iterator<Attribute> it = contactElem.attributeIterator();while(it.hasNext()){Attribute attr = it.next();System.out.println(attr.getName()+"="+attr.getValue());}}/** * 获取文本 */@Testpublic void test5() throws Exception{//1.读取xml文档,返回Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("./src/contact.xml"));/** * 注意: 空格和换行也是xml的内容 */String content = doc.getRootElement().getText();System.out.println(content);//获取文本(先获取标签对象,再获取标签上的文本)Element nameELem = doc.getRootElement().element("contact").element("name");//1. 得到文本String text = nameELem.getText();System.out.println(text);//2. 得到指定子标签名的文本内容String text2 = doc.getRootElement().element("contact").elementText("phone");System.out.println(text2);}}



以上就是java Domj4读取xml文件的内容,更多相关内容请关注小兔网(www.zhishitu.com)!