# xml2pdf **Repository Path**: lihhz/xml2pdf ## Basic Information - **Project Name**: xml2pdf - **Description**: 自定义xml结构,转为pdf文档 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-10-01 - **Last Updated**: 2021-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # XML和JAXB简介 Java Architecture for XML Binding (JAXB) XML仅仅是作为一种文档模式的结构化存储,并不适用于大数据量的存储。现在的Java中有很多类库比如DOM、SAX、JDOM和DOM4J等等都可以操作XML,但如果仅仅是想做JavaBean和XML节点元素的互相转换,而不涉及动态XML的处理,那么JAXB绝对是一个不错的选择。在比较新的jdk版本中,JAXB都是jdk的扩展包javax中自带的类库,不需要你引入第三方jar包。 ## JAXB常用注解 - @XmlRootElement,将Java类或枚举映射成XML元素根节点,是唯一一个必须注解,name属性指定根节点名称,不指定默认为类名的小写; - @XmlElement,将Java类的一个属性映射为XML节点元素,name属性可自定义元素名; - @XmlAttribute,将Java类的一个属性映射为XML节点元素的属性,name属性可自定义属性名; - @XmlType,将Java类或枚举类型映射到XML模式类型,常与@XmlRootElement、@XmlAccessorType共用,propOrder属性定义字段生成的XML节点顺序; - @XmlAccessorType,控制字段或属性的序列化。属性XmlAccessType有4个常量值: - FIELD:表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML,设置该值后,set/get方法上的映射注解就是多余的,所以如果此时set/get方法上再标注元素或者属性映射注解,将抛属性重复性异常; - PROPERTY:表示java对象中所有通过getter/setter方式绑定成属性到XML; - PUBLIC_MEMBER表示Java对象中所有的public访问权限的成员变量和通过getter/setter方式访问的成员变量,该值为默认值; - NONE表示Java对象的所有属性都不映射为XML的元素; - @XmlAccessorOrder,控制JAXB 绑定类中属性和字段的排序,有两个属性, - AccessorOrder.ALPHABETICAL——对生成的XML元素按字母书序排序 - XmlAccessOrder.UNDEFINED——不排序,默认为该值; - @XmlJavaTypeAdapter,自定义适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),解决日期(Date),数字(Number)格式化问题; - @XmlElementWrapper ,对于**数组或集合**(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器),该注解只能用在集合上; - @XmlTransient,用于标示在由Java对象映射XML时,忽略此属性,在生成的XML文件中将不出现此元素。 ## 设计思路 目前的设计思路是将整个pdf目标文档,使用table布局方式进行布局。通过对行列宽度、合并行列数目的设置,达到pdf页面输出的目的