zoukankan      html  css  js  c++  java
  • Java操作XML的JAXB工具

    在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding)。

    利用这个工具很方便生成XML的tag和Java类的对应关系。参照网上的资料,简单说明一下java操作xml的一些东西。

    1.先定义一个XML Schema文件。比如:

    [html] view plain copy
     
     print?
    1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
    2. <xs:schema version="1.0"  
    3.      xmlns:xs="http://www.w3.org/2001/XMLSchema">  
    4.    
    5.   <xs:element name="person">  
    6.     <xs:complexType>  
    7.       <xs:attribute name="name" type="xs:string"/>  
    8.       <xs:attribute name="age" type="xs:int"/>  
    9.     </xs:complexType>  
    10.   </xs:element>  
    11. </xs:schema>  


    相关XML Schema的定义规则可以参考http://www.w3.org/TR/xmlschema-2/

    2.生成java类。

    在命令行中执行

    C:jaxb>xjc person.xsd

    这样就生成了Persion类。

    [java] view plain copy
     
     print?
    1. package com.test.xml  
    2.   
    3. public class Person {  
    4.   
    5.     protected String name;  
    6.     protected Integer age;  
    7.    
    8.     public String getName() {  
    9.         return name;  
    10.     }  
    11.    
    12.     public void setName(String value) {  
    13.         this.name = value;  
    14.     }  
    15.    
    16.     public Integer getAge() {  
    17.         return age;  
    18.     }  
    19.    
    20.     public void setAge(Integer value) {  
    21.         this.age = value;  
    22.     }  
    23. }  



    tag的类型和java的类型的对应关系。

    XML Schema TypeJava 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的内容的例子。

    [java] view plain copy
     
     print?
    1. public class UnmarshallerUtil {  
    2.       
    3.    public UnmarshallerUtil () {  
    4.         try {  
    5.             // 1. 生成JAXBContex对象  
    6.             JAXBContext context = JAXBContext.newInstance("com.test.xml");  
    7.                   
    8.             // 2. 生成Unmarsaller对象  
    9.             Unmarshaller unmarshaller = context.createUnmarshaller();  
    10.    
    11.             File file = new File("artists.xml");  
    12.    
    13.             // 3. Unmarsaller  
    14.             Object obj = unmarshaller.unmarshal(file);  
    15.             Persons artists = (Persons)obj;  
    16.   
    17.             //其他处理  
    18.          
    19.         } catch (JAXBException ex) {  
    20.   
    21.         }  
    22.     }  
    23.   
    24.     public static void main(String[] args) {  
    25.         new UnmarshallerUtil();  
    26.     }  
    27. }  



  • 相关阅读:
    Delphi 通过Access Violation地址错误找到错误的哪行代码
    GitHub 转载:github删除repository
    GitHub 转载:github的高级搜索
    SVN 转载:svn报错:privious operation has not finshed;run 'cleanup' if it was interrupted
    GitHub 转载:github新手使用
    Delphi 对应JAVA的MD5加密处理
    Delphi 对应JAVA的BASE64位加密处理
    Delphi 对应JAVA的URL编码处理
    python基础(五)
    DataFrame
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/6750064.html
Copyright © 2011-2022 走看看