XML格式

摘自:http://www.cnblogs.com/ljhdo/p/5176563.html

1,最简单的XML格式

XML数据最简单的格式是:

  • 开始标签:<tag>
  • 标签的属性,属性值用双引号:<tag id="1" name="azure">,在单个节点中,属性名不能重复,属性之间使用空格分隔,在开始标签中,才能设置属性;
  • 结束标签:</tag>,结束标签不能有属性;
  • 子节点:在开始标签和结束标签,可以包含节点,叫做子节点;
  • 节点值:在开始标签和结束标签的标量值,叫做节点值;

范例:

<Expression ID="1" TaxonomyID="1">
  <SubExpression ID="1" OperandType="Tag" Operator="and">
    <Oprand ID="268819" Name="abuse" />
    <Oprand ID="277029" Name="mongohq" />
    <Oprand ID="516813" Name="access" />
  </SubExpression>
  <SubExpression ID="2" OperandType="Tag" Operator="and">
    <Oprand ID="283839" Name="reviews" />
    <Oprand ID="697348" Name="retention" />
  </SubExpression>
  <SubExpression ID="3" OperandType="Tag" Operator="not">
    <Oprand ID="281556" Name="richfaces" />
    <Oprand ID="2993766" Name="rgp" />
  </SubExpression>
</Expression>

 

示例:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <sub className="Person">
        <sub2 name = "name" value="欣欣">
        </sub2>
        <sub2 name = "age" value="12">
        </sub2>
        <sub2 name = "hobby" value="[看书,爬山,听音乐]">
        </sub2>
    </sub>
    <sub className="User">
        <sub2 name = "login_name" value="wshxq0218">
        </sub2>
        <sub2 name = "login_password" value="123456789">
        </sub2>
    </sub>
    
    
</root>

 

package beanutilcase;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import beanUtilsDemo01.Person;

public class Demo {

    public static void main(String[] args) throws Exception {
        Person p = new Person();
        User u = new User();
        // 创建解析器对象
        SAXReader sax = new SAXReader();
        // 读取文档,并获取根节点
        Document doc = sax.read("data.xml");
        Element root = doc.getRootElement();//
        // 获取根节点下的一级子元素
        List<Element> listFirst = root.elements();
        // 迭代
        for (Element e : listFirst) {
            // 获取一级子元素的属性值
            String path = e.attributeValue("className");
            // 获取二级子元素
            List<Element> listSecond = e.elements();
            // 定义map集合装属性值
            Map<String, Object> map = new HashMap<>();
            for (Element es : listSecond) {
                // 获取二级子元素的两个属性值
                String name = es.attributeValue("name");
                String value = es.attributeValue("value");
                map.put(name, value);
            }
            // 利用beanutils工具类进行封装
            // 判断是否为person
            if (path.matches(".*Person$")) {
                BeanUtils.populate(p, map);
            } else {
                BeanUtils.populate(u, map);
            }
        }
        System.out.println(p);
        System.out.println(u);
    }

}
//创建beanUtilsDemo01包
package beanUtilsDemo01;

import java.util.Arrays;

public class Person {
     // 属性
    private String name;
     private int age;
     private String[] hobby;

    // 构造方法
    public Person() {
        super();
     }

// getter/setter省略

// 覆写toString @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", hobby=" + Arrays.toString(hobby) + "]"; } }
package beanutilcase;

public class User {
    // 属性
    private String login_name;
    private String login_password;

    // getter/setter

    // 构造方法
    public User() {
        super();
    }

    // 覆写toString
    @Override
    public String toString() {
        return "User [login_name=" + login_name + ", login_password=" + login_password + "]";
    }

}

 

输出结果:

Person [name=欣欣, age=12, hobby=[看书, 爬山, 听音乐]]
User [login_name=wshxq0218, login_password=123456789]

posted @ 2017-07-06 10:02  wshxq0218  阅读(212)  评论(0编辑  收藏  举报