前文:xml是一种可扩展标记型语言,html里面的标签是固定的,而xml里的标签可以自己定义,可以写中文的标签,html用来展示数据,而xml主要是用来存储数据。xml具体的应用体现在1. 不同系统之间的传输数据2. 用来表示生活中有关系的数据3. 经常用在配置文件。

第一步 去mvn仓库找到dom4j的依赖

(如果不是建的maven工程,而是普通java工程,去mvn仓库下载.dom4j的jar包,然后导包到自己的java工程就好了,建普通java工程的朋友看到这里以后直接跳到第三步)

dom4j 无法读取android带冒号属性 dom4j读取xml文件_键值对


第二步 把依赖写到maven项目里的pom.xml文档中‘

dom4j 无法读取android带冒号属性 dom4j读取xml文件_键值对_02


第三步 以如下xml文档为例 想创建一个像这个样子的xml文档

dom4j 无法读取android带冒号属性 dom4j读取xml文件_键值对_03


以上xml中的标签逻辑是这样的

school标签里有两个class标签,每个class标签里有3个student标签。

即一个学校有两个班 每个班有3个学生。

第四步:见代码(代码中做了详细的注释,没看懂可以留言)

//创建一个xml文档对象
        Document document= DocumentHelper.createDocument();
        //创建xml文档的根节点:学校
        Element school=document.addElement("school");
        //给该根节点赋值(赋值键对)
        school.addAttribute("name","软帝教育");
        //创建学校的子节点 班级 假设有两个班级
        Element class1=  school.addElement("class1");
        Element class2=  school.addElement("class2");
           //给班级节点赋值(赋键值对)
          class1.addAttribute("name","1班");
          class2.addAttribute("name","2班");

          //给两个班级的子节点再创建子节点:学生   并赋予键值对   这里追加的方式之间在创建student节点以后通过addAttribute(String,String)追加键值对
          class1.addElement("student").addAttribute("id","101").addAttribute("name","A").addAttribute("age","18");
        class1.addElement("student").addAttribute("id","102").addAttribute("name","B").addAttribute("age","18");
        class1.addElement("student").addAttribute("id","103").addAttribute("name","C").addAttribute("age","18");

        class2.addElement("student").addAttribute("id","104").addAttribute("name","D").addAttribute("age","18");
        class2.addElement("student").addAttribute("id","105").addAttribute("name","E").addAttribute("age","18");
        class2.addElement("student").addAttribute("id","106").addAttribute("name","F").addAttribute("age","18");

        //xml格式化
        OutputFormat format=new OutputFormat();
        format.setIndentSize(2);//首行缩进2个字符
        format.setNewlines(true);//一个节点一行

        //生成持久化xml文件
        File file=new File("d:\\yang.xml");
        FileOutputStream fileOutputStream=new FileOutputStream(file);//把file对象转换成fileoutputStream对象 可以增加file对象的功能,这里用不到fileoutputStream的其他功能
        XMLWriter xmlWriter=new XMLWriter(fileOutputStream,format);//把文件输出流对象和xml的格式输进去
        xmlWriter.write(document);//把xml文档对象里的东西写进来

第五步 xml文档写好了,那么如何从一个xml文件中来读取我们想要的标签/节点呢? 见代码

File f=new File("d://yang.xml");
      SAXReader saxReader=new SAXReader();//创建SaxReader对象 用来读取xml类型的文件
        Document doc=saxReader.read(f);//将指定的xml文件读到 内存的文档对象中去

        //获取xml文档里的根节点 学校节点
        Element school_= doc.getRootElement();

        //通过学校节点来读取学校的子节点 班级节点
        List<Element> class_all= school_.elements();
        

        //通过班级节点来获得学生节点
        List<Element> student_1=class_all.get(0).elements();
        //这里以1班为例 .get(0)
        //是从班级集合中获得1班的班级 
   //.elements()是获得1班班级的子节点 即1班学生
        for(Element e:student_1)	、
       //迭代1班的所有的学生,并通过键值对输出他们的名字
        {
            System.out.println(e.attributeValue("name"));
        }

没看懂的话欢迎留言