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


获取节点:

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文件的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. xml学习(7) .net 获取xml节点或者属性最大值
  2. FireFox对XML的处理兼容IE的节点处理方法
  3. 读写xml所有节点个人小结 和 读取xml节点的数据总结
  4. XML中的标签与元素的使用具体介绍
  5. 详解XML命名空间(XML Namespaces)介绍以及节点读取方法的示例代码
  6. xml创建根节点、子节点的示例代码分享
  7. XML文件要有根标签(错误)的代码解决分享
  8. java通过XPath解析xml节点的代码详解
  9. 有关xml节点的文章推荐10篇

随机推荐

  1. 在Java中包含运行JavaScript的引擎的原因
  2. Java数组的运用
  3. JSP页面中有一个按钮 点击之后执行JAVA文
  4. Java 容器源码分析之 TreeMap
  5. 拖动层的javasvript代码 十行代码即可写
  6. java 使用Callable和Future返回线程执行
  7. Java获得文件的创建时间(精确到秒)
  8. 在javaScript中将数字转换为罗马数字。
  9. 反编译APK 得到JAVA代码和资源文件源码
  10. java课堂 动手动脑3