好好学习

扫一扫关注

java Domj4读取xml文件

下载文本     温酒不醉2022-10-05 09:33:53 4970
先概括,再以代码形式给出。


获取节点:

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

获取 标签:

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

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

IteratorElement.elementIterator("标签名");// 指定名称的所有子标签

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

获取属性:

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

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

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

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

ListElement.attributes(); //获取所有属性对象.推荐使用方案。

Iterator 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;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 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 it2 = elem.nodeIterator();while(it2.hasNext()){Node n2 = it2.next();System.out.println(n2.getName());}}}}@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);}private void getChildNodes(Element elem){System.out.println(elem.getName());//获取到了根标签的名称//得到子节点Iterator 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.得到当前标签下指定名称的【第一个】【子】标签//4.得到当前标签下指定名称的所有子标签,指定了contact名称,就得到这个名称的所有同名的标签//这里制定了名称,有局限性//5.得到当前rootElem标签下的的所有子标签对象,这里会拿出所有子标签对象。推荐使用。List list = rootElem.elements();//遍历List的方法//1)传统for循环  2)增强for循环 3)迭代器for(Element e:list){System.out.println(e.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  得到指定名称的属性值//2.2 得到指定属性名称的属性对象Attribute//2.3 得到【所有】属性对象,返回LIst集合。不需要知道属性名称和多少个属性//2.4 得到【所有属性】对象,返回迭代器Iterator 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"));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.haohaoxuexi.cc)!

 
反对 0举报 0 收藏 0 评论 0

(c)2022 haohaoxuexi.cc SYSTEM All Rights Reserved

冀ICP备17031443号-5