`

动态生产xml格式文件

阅读更多
1创建一个xml文件最终来利用jaxb来生产相对的类和文件
   <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="users">
<!-- 设置根节点 -->
<xs:annotation><xs:documentation>users</xs:documentation></xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element type="inttable" name="userid"></xs:element>
<xs:element type="xs:string" name="username"></xs:element>
<xs:element type="xs:string" name="userpwd"></xs:element>
<xs:element type="city" name="ctiyinfo" minOccurs="0" maxOccurs="unbounded"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--  -->
<xs:complexType name="city">
<xs:attribute name="cityname" type="xs:string"></xs:attribute>
<xs:attribute name="cityId" type="xs:string"></xs:attribute>
</xs:complexType>
<!--  -->
<xs:simpleType name="inttable">
<xs:restriction base="xs:integer">
<xs:maxExclusive value="100000"></xs:maxExclusive>
<xs:minInclusive value="1000"></xs:minInclusive>
</xs:restriction>
</xs:simpleType>
</xs:schema>
2 安装jaxb插件或者手动来生成对应的文件
   A.city实体类      //
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1-b02-fcs
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2010.10.29 at 05:42:06 下午 CST
//


package model;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlType;


/**
* <p>Java class for city complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType name="city">
*   &lt;complexContent>
*     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
*       &lt;attribute name="cityname" type="{http://www.w3.org/2001/XMLSchema}string" />
*       &lt;attribute name="cityId" type="{http://www.w3.org/2001/XMLSchema}string" />
*     &lt;/restriction>
*   &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "city")
public class City {

    @XmlAttribute
    protected String cityname;
    @XmlAttribute
    protected String cityId;

    /**
     * Gets the value of the cityname property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *    
     */
    public String getCityname() {
        return cityname;
    }

    /**
     * Sets the value of the cityname property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *    
     */
    public void setCityname(String value) {
        this.cityname = value;
    }

    /**
     * Gets the value of the cityId property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *    
     */
    public String getCityId() {
        return cityId;
    }

    /**
     * Sets the value of the cityId property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *    
     */
    public void setCityId(String value) {
        this.cityId = value;
    }

}
   2.users实体类 //均为自动生产

   //
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1-b02-fcs
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2010.10.29 at 05:42:06 下午 CST
//


package model;

import java.util.ArrayList;
import java.util.List;
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 javax.xml.bind.annotation.XmlType;


/**
* <p>Java class for anonymous complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* &lt;complexType>
*   &lt;complexContent>
*     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
*       &lt;sequence>
*         &lt;element name="userid" type="{}inttable"/>
*         &lt;element name="username" type="{http://www.w3.org/2001/XMLSchema}string"/>
*         &lt;element name="userpwd" type="{http://www.w3.org/2001/XMLSchema}string"/>
*         &lt;element name="ctiyinfo" type="{}city" maxOccurs="unbounded" minOccurs="0"/>
*       &lt;/sequence>
*     &lt;/restriction>
*   &lt;/complexContent>
* &lt;/complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "userid",
    "username",
    "userpwd",
    "ctiyinfo"
})
@XmlRootElement(name = "users")
public class Users {

    protected int userid;
    @XmlElement(required = true)
    protected String username;
    @XmlElement(required = true)
    protected String userpwd;
    protected List<City> ctiyinfo;

    public void setCtiyinfo(List<City> ctiyinfo) {
this.ctiyinfo = ctiyinfo;
}

/**
     * Gets the value of the userid property.
     *
     */
    public int getUserid() {
        return userid;
    }

    /**
     * Sets the value of the userid property.
     *
     */
    public void setUserid(int value) {
        this.userid = value;
    }

    /**
     * Gets the value of the username property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *    
     */
    public String getUsername() {
        return username;
    }

    /**
     * Sets the value of the username property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *    
     */
    public void setUsername(String value) {
        this.username = value;
    }

    /**
     * Gets the value of the userpwd property.
     *
     * @return
     *     possible object is
     *     {@link String }
     *    
     */
    public String getUserpwd() {
        return userpwd;
    }

    /**
     * Sets the value of the userpwd property.
     *
     * @param value
     *     allowed object is
     *     {@link String }
     *    
     */
    public void setUserpwd(String value) {
        this.userpwd = value;
    }

    /**
     * Gets the value of the ctiyinfo property.
     *
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the ctiyinfo property.
     *
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getCtiyinfo().add(newItem);
     * </pre>
     *
     *
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link City }
     *
     *
     */
    public List<City> getCtiyinfo() {
        if (ctiyinfo == null) {
            ctiyinfo = new ArrayList<City>();
        }
        return this.ctiyinfo;
    }


  C.产生的工厂类  
     //
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.1-b02-fcs
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
// Any modifications to this file will be lost upon recompilation of the source schema.
// Generated on: 2010.10.29 at 05:42:06 下午 CST
//


package model;

import javax.xml.bind.annotation.XmlRegistry;


/**
* This object contains factory methods for each
* Java content interface and Java element interface
* generated in the model package.
* <p>An ObjectFactory allows you to programatically
* construct new instances of the Java representation
* for XML content. The Java representation of XML
* content can consist of schema derived interfaces
* and classes representing the binding of schema
* type definitions, element declarations and model
* groups.  Factory methods for each of these are
* provided in this class.
*
*/
@XmlRegistry
public class ObjectFactory {


    /**
     * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: model
     *
     */
    public ObjectFactory() {
    }

    /**
     * Create an instance of {@link Users }
     *
     */
    public Users createUsers() {
        return new Users();
    }

    /**
     * Create an instance of {@link City }
     *
     */
    public City createCity() {
        return new City();
    }


3.添加测试类
package Jaxb;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.ValidationEvent;
import javax.xml.bind.ValidationEventHandler;
import javax.xml.bind.ValidationEventLocator;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import model.City;
import model.ObjectFactory;
import model.Users;

public class Test {
public static void readXml() {

// try {
// File xmlDocument = new File("jobConfig.xml");
// JAXBContext jaxbContext = JAXBContext.newInstance();
// Unmarshaller unMarshaller = jaxbContext.createUnmarshaller();
// SchemaFactory schemaFactory = SchemaFactory
// .newInstance("http://www.w3.org/2001/XMLSchema");
// Schema schema = schemaFactory.newSchema(new File("model/xml.xsd"));
// unMarshaller.setSchema(schema);
// Customer config = (Customer) unMarshaller.unmarshal(xmlDocument);
//
// } catch (Exception e) {
// e.printStackTrace();
// }
}
public static void getXml(){
    try {
    //File xmlDocument = new File("jobConfig.xml");
JAXBContext jaxbContext = JAXBContext.newInstance("model");
Marshaller marshaller = jaxbContext.createMarshaller(); 
marshaller.setProperty(  
        Marshaller.JAXB_FORMATTED_OUTPUT,  
        true); 
marshaller.setProperty("jaxb.encoding", "gbk");
ObjectFactory factory = new ObjectFactory();
                         Users  users=factory.createUsers();
                         users.setUserid(1111);
                         users.setUserpwd("海南");
                         users.setUsername("chani");
                           City city=new City();
                         city.setCityId("湖北");
                         city.setCityname("湖南");
                         List<City> ctiyinfo=new ArrayList<City>();
                         ctiyinfo.add(city);
                         users.setCtiyinfo(ctiyinfo);
         // marshaller.marshal(customer, new FileOutputStream(xmlDocument));  
             marshaller.marshal(users,System.out);  
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
getXml();
}
public static Users xml2Datas(String resultXml) {
Unmarshaller u = validate();
Users datas = null;
try {
datas = (Users) u.unmarshal(new StringReader(resultXml));
} catch (Exception je) {
je.printStackTrace();
throw new RuntimeException("解码出错!!" + je.getMessage());
}
return datas;
}
/**
* 对xml文件解组时的验证
*
* @return boolean
*/
private static Unmarshaller validate() {
JAXBContext jc;
Unmarshaller u = null;
try {
jc = JAXBContext.newInstance("model");
u = jc.createUnmarshaller();
SchemaFactory sf = SchemaFactory
.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(Test.class.getResource("user.xsd"));
u.setSchema(schema);
u.setEventHandler(new ValidationEventHandler() {
public boolean handleEvent(ValidationEvent ve) {
if (ve.getSeverity() == ValidationEvent.WARNING
|| ve.getSeverity() != ValidationEvent.WARNING) {
ValidationEventLocator vel = ve.getLocator();
return false;
}
return true;
}
});
} catch (Exception e) {
e.getMessage();
}
return u;
}

/**
* 将时间类型转换为XML表示的时间类型
*
* @param date 时间
* @return XML表示的时间类型
* @author lifh
*/
    public static XMLGregorianCalendar getDate(Date date) {
        if(null == date){
            return null;
        }
        try {
            GregorianCalendar c = new GregorianCalendar();
            c.setTime(date);
            return DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
        } catch (Exception e) {
            throw new Error(e);
        }
    }
}



分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    delphi格式化xml文件demo

    本文将深入探讨如何在Delphi XE7中格式化XML文件,通过提供的"delphi格式化xml文件demo"进行示例说明。 首先,让我们了解XML的基本概念。XML是一种标记语言,其主要目的是为了传输和存储数据,而不是显示数据。它的...

    动态生成XML文件

    标题中的“动态生成XML文件”指的是在程序运行过程中,根据特定的数据或逻辑生成XML文档的过程。这通常用于数据交换、配置文件存储或者报告生成等场景。在这个案例中,描述指出生成XML是基于数据库中表的结构,这...

    kettle动态解析XML文件数据导入Oracle或者其他数据库

    kettle动态解析XML文件数据导入Oracle或者其他数据库 需求背景: 因为客户每天都要通过接口通过ftp上传固定格式的xml的文件,需要每天定时解析指定目录下的指定名称的xml文件导入Oracle和其他的数据库,所以开发了这...

    PLCOpen XML 格式说明

    这意味着,任何符合IEC 61131-3标准的PLC设备都能理解并正确执行PLCOpen XML格式文件中所定义的程序。这使得在不同的PLC系统之间进行程序迁移和集成变得更加容易,同时也降低了对特定厂商专有格式的依赖。 【部分...

    mac上sublime 支持json, xml 格式化

    总结来说,Mac用户在Sublime Text中可以通过安装和使用特定的插件,如“Pretty JSON”和“XML Tools”,轻松地对JSON和XML文件进行格式化。这些插件大大简化了数据格式的处理,提升了开发体验。同时,了解如何利用...

    halcon XML文件处理函数,halcon函数手册,Halcon

    例如,在自动化产线中,HALCON可以读取生产线配置的XML文件,获取关于工件位置、检测标准等信息。同样,它也能将检测结果以XML格式输出,供上位机或其他系统进一步分析和处理。 四、示例代码 下面是一个简单的示例...

    读取PLC寄存器,读写XML文件

    本篇将详细阐述如何读取PLC寄存器以及操作XML文件。 首先,PLC是工业控制系统的核心组成部分,它负责接收来自传感器的输入信号,并根据预设的程序逻辑控制执行器的动作。读取PLC寄存器是获取设备状态或监控生产过程...

    kettle批量解析多个xml文件

    Kettle提供了解析XML文件并将其转换为结构化数据的能力,可以方便地处理各种XML格式,确保数据能够正确无误地导入Oracle数据库进行进一步的分析或存储。 以下是使用Kettle批量解析XML文件并导入到Oracle数据库的...

    发票导入XML文件生成工具V2.0

    发票导入XML文件生成工具V2.0,EXCEL开发的,VBA有密码,有大神可以下载破解一下

    xmlbuddy eclipse插件,编写xml文件

    XMLBuddy是一款强大的XML编辑器插件,专为Eclipse集成开发环境设计,极大地提升了XML文件的编写效率和准确性。这款插件对于开发者,特别是那些在处理Hibernate等框架时需要频繁与XML配置文件打交道的人来说,是非常...

    xml文件保存自动刷新

    在IT行业中,XML文件是一种广泛使用的数据交换格式,特别是在Java应用程序中,如Spring和MyBatis框架。在开发过程中,经常需要频繁修改XML配置文件,例如mapper.xml,以调整数据库查询或更新语句。手动刷新这些配置...

    Groovy 动态修改XML

    在实际应用中,Groovy的这种XML处理方式特别适用于需要动态生成或修改XML配置文件、与XML格式的数据交互或者进行自动化测试等场景。由于Groovy的动态特性,它允许开发者在运行时根据需要改变代码逻辑,这在处理XML时...

    php生成xml文件

    php生成xml文件

    mybatis xml文件自动生成

    "mybatis xml文件自动生成"是开发过程中的一个重要环节,它可以帮助开发者提高效率,减少手动编写XML映射文件和对应的POJO(Plain Old Java Object)类的工作量。 MyBatis的Mapper文件是其核心组成部分之一,它包含...

    yonyou NC xml导入文件.7z

    - **格式规范**:XML文件必须遵循用友NC系统设定的XML格式,包括根节点、子节点的命名,以及数据项的排列顺序。例如,凭证信息可能包含在`&lt;凭证&gt;`节点下,而每条分录则作为`&lt;分录&gt;`子节点。 - **数据完整**:导入...

    汇川IS620N 总线型伺服驱动器xml配置文件

    不同版本的XML文件可能对应着驱动器软件的不同迭代,例如v2.6.2可能是较新的版本,包含了更多优化和新功能。 配置文件的主要内容可能包括: 1. **设备信息**:驱动器的型号、序列号、固件版本等。 2. **电机参数**...

    将SQL数据库表转换成XML文件输出(脚本)

    - 使用`bcp`命令生成格式文件,这一步是可选的,但有助于确保XML文件的结构与数据库表一致。 - 使用`FOR XML AUTO`将表数据转换为XML格式,并通过`bcp`命令将此XML数据写入磁盘上的文件。 - `-T`参数表示信任...

    sax,dom解析xml和生产xml文件

    本文将深入探讨两种主要的XML解析方法——SAX(Simple API for XML)和DOM(Document Object Model),并讲解如何使用它们来解析XML文件以及生成XML文件。 一、SAX解析XML SAX是一种事件驱动的解析器,它逐行扫描...

    httpwatch文件自动导出为xml

    4. **数据处理**:导出的XML文件可以被任何支持XML的工具或编程语言读取。开发者可以使用XPath来查询特定数据,或者用XSLT转换XML格式。 5. **集成与分析**:自动导出的XML数据可以集成到持续集成/持续部署(CI/CD)...

    Xml格式化-java_class反编译工具

    在处理XML文件时,保持良好的格式化是非常重要的,这有助于提高代码的可读性和可维护性。XML格式化工具通常可以自动调整XML文档的布局,包括缩进、换行和添加或删除空格,使得XML文件看起来更加整洁。 Java_class反...

Global site tag (gtag.js) - Google Analytics