Java Web基础之XML

😄XML是什么​

eXtensive Markup Language,是一种可扩展的标记语言,被设计用来传输和存储数据,是万维网协会推出的一套数据交换标准。

😂XML基本语法​

1.标记必须闭合。

2.必须合理嵌套。

3.XML元素是指成对标签出现的内容。

4.命名规则:可以包含字母数字和其他字符。

不能以xml开头,包括大小写。

尽量避免使用"-"和".",使用下划线。

不能使用":"。

5.XML属性同HTML属性,<user language="java"></user>

6.只能有一个根元素。

7.大小写敏感。

8.空白被保留。

9.注释:<!--单行-->

😆常见的XML解析模型

1.DOM解析:创建DocumentBuilderFactory对象。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

通过DocumentBuilderFactory构建DocumentBuilder对象。

DocumentBuilder documentBuilder = factory.newDocumentBuilder();

DocumentBuilder解析XML文件变为document对象。

Document document = documentBuilder.parse(file).

2.DOM4j解析:创建SAXReader实例。

SAXReader saxReader = new SAXReader();

利用SAXReader获取XML的Document。

Document document = saxReader.read(file);

3.SAX解析:略

😁XML与java类映射JAXB

将XML映射到java类:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import java.io.File;
import java.util.List;

public class JAXBUnmarshalDemo {
  public static void main(String[] args) {
      File file = new File("D:\\Tencent\\QQ\\1030168088\\FileRecv\\火车订票系统源文件\\2814554727728128\\testRegister\\user.xml");
      JAXBContext jaxbContext;
      try {
          jaxbContext = JAXBContext.newInstance(Users.class);
          Unmarshaller u = jaxbContext.createUnmarshaller();
          Users users = (Users)u.unmarshal(file);
          List<User> list = users.getList();
          for (User user:list){
              System.out.println(user.toString());
          }
      } catch (JAXBException e) {
          e.printStackTrace();
      }

  }
}
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.ArrayList;
import java.util.List;
@XmlRootElement(name = "users")
@XmlAccessorType(XmlAccessType.FIELD)
public class Users {
  @XmlElement(name = "user")
  private List<User> list = new ArrayList<User>();
  public Users(){
  }
  public Users(List<User> list){
      super();
      this.list = list;
  }
  public void setList(){
      this.list = list;
  }
  public List<User> getList(){
      return list;
  }
}
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class Address {
  @XmlAttribute
  private String state;
  @XmlElement
  private String city;
  @XmlElement
  private String area;

  public Address() {
  }

  @Override
  public String toString() {
      return "Address{" +
              "state='" + state + '\'' +
              ", city='" + city + '\'' +
              ", area='" + area + '\'' +
              '}';
  }

  public String getState() {
      return state;
  }

  public void setState(String state) {
      this.state = state;
  }

  public String getCity() {
      return city;
  }

  public void setCity(String city) {
      this.city = city;
  }

  public String getArea() {
      return area;
  }

  public void setArea(String area) {
      this.area = area;
  }

  public Address(String state, String city, String area) {
      this.state = state;
      this.city = city;
      this.area = area;
  }
}
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

@XmlAccessorType(XmlAccessType.FIELD)
public class User{
  @XmlAttribute
  private String country;
  @XmlElement
  private String name;
  @XmlElement
  private int age;
  @XmlElement
  private String sex;
  @XmlElement
  private String address;

  @Override
  public String toString() {
      return "User{" +
              "country='" + country + '\'' +
              ", name='" + name + '\'' +
              ", age=" + age +
              ", sex='" + sex + '\'' +
              ", address='" + address + '\'' +
              '}';
  }

  public User(String country, String name, int age, String sex, String address) {
      this.country = country;
      this.name = name;
      this.age = age;
      this.sex = sex;
      this.address = address;
  }

  public String getCountry() {
      return country;
  }

  public void setCountry(String country) {
      this.country = country;
  }

  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }

  public int getAge() {
      return age;
  }

  public void setAge(int age) {
      this.age = age;
  }

  public String getSex() {
      return sex;
  }

  public void setSex(String sex) {
      this.sex = sex;
  }

  public String getAddress() {
      return address;
  }

  public void setAddress(String address) {
      this.address = address;
  }

  public User(){

  }
}

 

posted @ 2020-04-19 21:29  Xiao-zhi  阅读(148)  评论(0)    收藏  举报