在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding)。
利用这个工具很方便生成XML的tag和Java类的对应关系。参照网上的资料,简单说明一下java操作xml的一些东西。
1.先定义一个XML Schema文件。比如:
xmlns:xs="http://www.w3.org/2001/XMLSchema">
相关XML Schema的定义规则可以参考
http://www.w3.org/TR/xmlschema-2/
2.生成java类。
在命令行中执行
C:\jaxb>xjc person.xsd
这样就生成了Persion类。
package com.test.xml
public class Person {
protected String name;
protected Integer age;
public String getName() {
return name;
}
public void setName(String value) {
this.name = value;
}
public Integer getAge() {
return age;
}
public void setAge(Integer value) {
this.age = value;
}
}
tag的类型和java的类型的对应关系。
XML Schema Type
Java Data Type
xsd:string
java.lang.String
xsd:integer
java.math.BigInteger
xsd:int
int
xsd.long
long
xsd:short
short
xsd:decimal
java.math.BigDecimal
xsd:float
float
xsd:double
double
xsd:boolean
boolean
xsd:byte
byte
xsd:QName
javax.xml.namespace.QName
xsd:dateTime
javax.xml.datatype.XMLGregorianCalendar
xsd:base64Binary
byte[]
xsd:hexBinary
byte[]
xsd:unsignedInt
long
xsd:unsignedShort
int
xsd:unsignedByte
short
xsd:time
javax.xml.datatype.XMLGregorianCalendar
xsd:date
javax.xml.datatype.XMLGregorianCalendar
xsd:g
javax.xml.datatype.XMLGregorianCalendar
xsd:anySimpleType
java.lang.Object
xsd:anySimpleType
java.lang.String
xsd:duration
javax.xml.datatype.Duration
xsd:NOTATION
javax.xml.namespace.QName
3. 读取xml的内容到java对象。
java读取xml的内容的例子。
public class UnmarshallerUtil {
public UnmarshallerUtil () {
try {
// 1. 生成JAXBContex对象
JAXBContext context = JAXBContext.newInstance("com.test.xml");
// 2. 生成Unmarsaller对象
Unmarshaller unmarshaller = context.createUnmarshaller();
File file = new File("artists.xml");
// 3. Unmarsaller
Object obj = unmarshaller.unmarshal(file);
Persons artists = (Persons)obj;
//其他处理
} catch (JAXBException ex) {
}
}
public static void main(String[] args) {
new UnmarshallerUtil();
}
}