Java Web基础之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
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(){
}
}

浙公网安备 33010602011771号