猎取节点:
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 { /** * 取得节点信息 */ @Test public 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,给出泛型为Node while(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 */ @Test public void test2() throws Exception{ //1.读取xml文档,返回Document对象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); //取得根标签。contactList Element 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); } }; } /** * 猎取标签 */ @Test public 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 松开 l while(it.hasNext()){ Element elem = it.next(); System.out.println(elem.getName()); }*/ //猎取更深条理的标签(要领只能一层层地猎取) Element nameElem = doc.getRootElement(). element("contact").element("name"); System.out.println(nameElem.getName()); } /** * 猎取属性 */ @Test public 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()); } } /** * 猎取文本 */ @Test public 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文件的内容,更多相关内容请关注ki4网(www.ki4.cn)!