jdom利用纯java技术对xml文档进行解析、生成、序列化等各种操作

jdom利用纯java技术对xml文档进行解析、生成、序列化等各种操作_第1张图片

Jdom对xml文档进行解析、生成、序列化等各种操作。

使用jdom之前,首先要导入jar包:jdom.jar 
获得根元素:

  • 首先确定xml文件位置

        String xmlPath = "./src/ceshi/Test.xml";
        //使用的解析器,这里表示默认的解析器
        SAXBuilder builder = new SAXBuilder(false);
        try {
            //得到Document,以后的操作都是Document操作的
            Document document = builder.build(xmlPath);
            //得到根元素
            Element root = document.getRootElement();
            } catch (JDOMException e) {
            e.printStackTrace();
        } 

Jdom得到的所有的节点,都是org.jdom.Element类,他的子节点也是org.jdom.Element类,得到的root是Element对象,直接输出System.out.println(root);显示:

[Element: ]

  • Element的常用方法:

1、String  getName()  返回Element类的名称 

System.out.println(root.getName()); 结果 :books

2、String  getAttributeValue(Stringname)   获得属性值

System.out.println(root.getAttributeValue("size"));  结果:3

3、setAttribute(String name,String value)   设置属性值

4、removeAttribute(String name)  删除属性

5、getAttributes().clear()  清空所有属性

6、String  getText()  获得Element(当前节点)的值,当前节点必须是最后一级节点,否则返回空。

7、String  getTextTrim()  与getText()相同,只是去掉两边的空格

8、String  setText(String  name)  改变Element(当前节点)的值,当前节点必须是最后一级节点。这个只是对document的修改,并没有对实际的xml文档修改。若要修改实际的文档,需要使用XMLOutputter:

XMLOutputter outputter=new XMLOutputter();

outputter.output(document,new FileOutputStream(xmlPath));

9、Element  getChild(String  name)  获得指定名称的第一个元素

10、         removeChildren(String  name)  删除名称为name的子元素

11、         addContent(Element  e)   增加节点

  •  获得子元素值:

//获得根元素
   
输出为:

     Elementroot = document.getRootElement();
         //通过根元素,获得book元素
         Elementbook = root.getChild("book");
         //获得book元素的name节点的值(name节点必须为最底层元素,否则返回空)
      System.out.println(book.getChildTextTrim("name")); 

java开发

getChild()获得的是第一个元素。
获得所有属性:

节点可以获得自己的属性,对所有的属性进行遍历,然后转换为属性类型:

Attribute att = (Attribute) root.getAttributes().get(0);
        //获得属性名称
        System.out.println(att.getName());
        //获得属性值
    System.out.println(att.getValue()); 

  • 获得子节点集合:

1、 获得所有子节点

List childrens =root.getChildren();

        for(int i=0;i

           System.out.println(childrens.get(i));

       }

通过root.getChildren()得到的是一个List集合,集合中是Element对象:

[Element: ]

[Element: ]

[Element: ]

得到的集合中的Element对象,需要进行类型转换才能作为Element操作:

Element child0 = (Element) childrens.get(0);

System.out.println(child0.getName());

例如,对books所有子节点book遍历属性:

List childrens = root.getChildren();

for(inti=0;i

     Element child= (Element) childrens.get(i);

     System.out.println(child.getAttributeValue("author"));

}

2、 获得指定名称的子节点

可以通过名称获得子节点,得到的同样是Element集合,并且是所有的名称为“name”的集合:

List childrens = book.getChildren("name");

生成xml文档:
使用java定义各个节点以及属性,然后生成xml文档:

       //定义所有节点
        Element root,student,number,name,age;        
        Element student2,number2,name2,age2;  
        
        //生成根元素:student-info
        root = new Element("student-info"); 
        
        //生成元素:student(number,name,age)      
        student = new Element("student");                       
        number = new Element("number");
        name = new Element("name");
        age = new Element("age");
        //生成元素:student2(number,name,age)      
        student2 = new Element("student2");               
        number2 = new Element("number2");
        name2 = new Element("name2");
        age2 = new Element("age2");
        //将根元素植入文档doc中
        Document doc = new Document(root); 
        
        //分别将两个student赋值,然后分别加载到root上
        number.setText("001");
        name.setText("zs");
        age.setText("24");
        number2.setText("002");
        number2.setAttribute(new Attribute("name","fxt"));//属性
        name2.setText("ls");
        age2.setText("50");
        student.addContent(number);
        student.addContent(name);
        student.addContent(age);
        student2.addContent(number2);
        student2.addContent(name2);
        student2.addContent(age2);
        root.addContent(student);
        root.addContent(student2);
        
        //定义格式:字符为gb2312,缩进为4个空格(若Format报错,说明版本太低,下载最  新jdom.jar即可)
        Format format = Format.getCompactFormat();
        format.setEncoding("gb2312"); 
        format.setIndent("    "); 
        
        //输出新文件,若已存在,则覆盖
        XMLOutputter XMLOut = new XMLOutputter(format);
        XMLOut.output(doc, new FileOutputStream("./src/ceshi/jdomTest2.xml"));  

你可能感兴趣的:(开发语言,xml)