`
schy_hqh
  • 浏览: 555819 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

实际应用-使用xsd定义Model对象

 
阅读更多

使用schema定义Model

好处:对象关联关系非常清晰

 

student.xsd

 

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/test"
	xmlns:tns="http://www.example.org/test" elementFormDefault="qualified">
	
	<element name="student" type="tns:Student"/>
	
	<complexType name="Student">
		<sequence>
			<element name="name" type="string"/>
			<element name="sex" type="tns:Sex"></element>
		</sequence>
	</complexType>
	
	<!-- 类型定义可以抽取到一个xsd中进行定义,然后让其它xsd引入使用 -->
	<simpleType name="Sex">
		<restriction base="string">
			<enumeration value="mail"/>
			<enumeration value="femail"/>
		</restriction>
	</simpleType>
</schema>

 

 

class.xsd

 

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/test"
	xmlns:tns="http://www.example.org/test" elementFormDefault="qualified">
	
	<!-- targetNamespace,即为java的包结构 -->
	
	<!-- 
		1.student.xsd与class.xsd的命名空间名称需要相同
		2.使用include导入其它xsd
	 -->
	<include schemaLocation="student.xsd"></include>
	
	<element name="class" type="tns:Class"/>
	
	<complexType name="Class">
		<sequence>
			<element name="grade" type="int"/>
			<element name="name" type="string"/>
			<sequence maxOccurs="unbounded">
				<element name="student" type="tns:Student"/>
			</sequence>
		</sequence>
	</complexType>
</schema>

 

 

定义好之后,使用java内置的xjc名称将xsd转换为JAVA文件

即可得到我们需要的Model

 

xjc -d e:/xjc -verbose E:\project\spring\xsd\src\main\class.xsd

 

 

注意:xjc命令默认不会给生成的java对象加@XmlRootElement

 

 

使用JAXB完成JAVA对象与XML的转换:

marshaller: POJO--->XML

unmarshaller: XML--->POJO

 

 

package org.example.test;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

public class Test {
	public static void main(String[] args) throws JAXBException {
		Student stu = new Student();
		stu.setName("zs");
		stu.setSex(Sex.FEMAIL);
		
		JAXBContext ctx = JAXBContext.newInstance(Student.class);
		Marshaller marshaller = ctx.createMarshaller();
		marshaller.setProperty("jaxb.encoding", "GBK");//设置编码
		marshaller.setProperty("jaxb.formatted.output", Boolean.TRUE);//格式化输出
		//marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);//去掉xml头部
		marshaller.marshal(stu, System.out);
	}
}

 

 

输出:

 

<?xml version="1.0" encoding="GBK" standalone="yes"?>
<student xmlns="http://www.example.org/test">
    <name>zs</name>
    <sex>femail</sex>
</student>

 

 

 问题:

如何把 standalone="yes"? 去掉呢?网上找的方法不行,我用的JDK7!

 

 

 

分享到:
评论

相关推荐

    eclispe插件开发-XML Schema Model API--xsd_API-doc

    1. **创建和修改XML Schema**: 使用xsd_API可以创建新的XML Schema对象,或者修改已有的XML Schema。这包括添加新的元素、属性、复杂类型等。 2. **解析XML Schema**: 可以将XML Schema文档加载到内存中的模型,...

    spring3.0的xsd文件.rar

    此外,`mvc.xsd`对于Spring MVC(Model-View-Controller)来说至关重要,它定义了诸如`&lt;mvc:annotation-driven&gt;`的元素,支持基于注解的控制器和数据绑定,简化了Web应用的开发。 总之,这个压缩包中的Spring 3.0 ...

    EMF XSD SDK

    2. **XSD Model**:这是基于EMF的,将XSD文档转换为Java对象模型,使得开发者可以使用面向对象的方式来操作XML模式。 3. **Code Generation**:EMF XSD SDK可以根据XSD文件自动生成Java代码,这些代码可以直接用于...

    Xsd转换xml

    在实际应用中,这个过程可能还需要考虑一些高级特性,比如命名空间、复杂类型、元素约束等。例如,XSD支持包含其他XSD,定义全局和局部元素,以及使用枚举、日期、数字等复杂数据类型。这些都需要在转换过程中正确...

    xml文件自动转成java对象工具

    XSD文件转Java工具能够基于XSD文件生成对应的Java类,这些类包含了与XSD定义的元素和属性相对应的字段和方法。 转换过程通常包括以下步骤: 1. **解析XSD文件**:工具首先读取XSD文件,分析其元素、属性、类型定义...

    如何将java对象转换成xml

    - 对于大型项目,考虑使用XML Schema(XSD)来定义和验证XML结构。 总之,Java对象到XML的转换是一个重要的技能,理解不同的转换方法和库可以帮助我们更高效地处理数据交换和存储。在实际应用中,选择合适的工具和...

    xml与java对象映射

    Java工具如JAXB和XML Beans可以直接使用XSD文件生成Java类,从而实现对象到XML的严格映射。 总之,XML与Java对象的映射是Java开发中的重要环节,涉及多种技术和工具。开发者可以根据项目需求选择合适的工具,如JAXB...

    SSM笔记-SpringMVC基本使用

    4. **Controller配置**:使用@Controller注解定义一个类作为Controller,@RequestMapping或@RequestMapping方法注解用于映射请求。 ```java @Controller public class HelloWorldController { @...

    spring4.0 schema

    `aop.xsd`包含用于定义切面、通知和目标对象的配置元素,使我们能解耦关注点和业务逻辑。 4. **mvc** - Model-View-Controller模块,主要用于Web应用的开发,提供了一个基于注解和XML配置的MVC框架。`mvc.xsd`包含...

    XML编程从入门到精通

    本书通过具体的实例,帮助读者掌握XML的实际应用,特别是如何利用XML进行跨平台和跨语言的数据交换。 #### 二、XML提高篇:深入数据建模 - **数据建模**:介绍了如何使用XML进行高效的数据组织与建模。这一部分...

    xml转换对象

    使用JAXB,你可以定义一个Java类,然后JAXB会自动生成对应的XML schema(XSD),或者根据已有的XSD生成Java类。以下是使用JAXB进行XML到对象转换的基本步骤: 1. **创建Java类**: 首先,你需要创建一个或多个Java类...

    IBM Workplace Forms XML_Model

    本篇文章将深入探讨IBM Workplace Forms中的XML数据模型(XML Data Model),包括其结构、使用方法以及在实际操作中的应用技巧。 #### 阅读对象 本指南适用于希望深入了解IBM Workplace Forms XML数据模型的开发...

    C# XML介绍

    - XSD用于定义XML文档的结构和数据类型,起到验证XML文档是否合法的作用。 - 在C#中,可以用XmlSchema类读取和操作XSD,同时System.Xml.Schema命名空间提供了验证XML文档是否符合XSD的工具。 7. XML命名空间: -...

    pb9操作xml

    - DTD与XSD:XML文档可以使用DTD(Document Type Definition)或XSD(XML Schema Definition)来定义其结构和数据类型。 2. **PB9中的XML支持**: - PB9内置了对XML的支持,提供了XMLTextReader和XMLTextWriter类...

    springmvc入门

    3. **视图解析器(View Resolver):** 将逻辑视图名称解析为实际的视图对象。 4. **注解配置(Annotation-based Configuration):** 使用注解简化控制器的定义和配置。 #### 二、搭建 Spring MVC 环境 为了构建一...

    疯狂XML讲义 源码1-7

    - XML Schema(XSD):替代DTD,提供更强大的数据类型和复杂结构定义。 3. **XPath**: - XPath语言:用于在XML文档中查找信息的语言,通过路径表达式选取节点。 - XPath的节点类型:元素、属性、文本、命名空间...

    操作XML方法大全

    - 验证XML文档:使用XML Schema Definition (XSD) 文件对XML进行校验,确保其符合预定义的规则。 7. **Namespaces**: - 在XML中,命名空间用于区分相同名称的元素和属性,通过前缀和URI(Uniform Resource ...

    xmlValidate.rar

    3. 验证XML:使用Schema对象对DOM树进行遍历,检查每个元素、属性和值是否符合XSD的定义。 4. 返回结果:如果所有检查都通过,则验证成功;否则,返回错误信息。 在实际应用中,XML校验工具不仅可以用于单个XML文档...

    SSM框架-详细整合方案 适用初学者

    它采用了MVC(Model-View-Controller)设计模式,将业务逻辑、数据、表示层分离,使得代码更加清晰、易于维护。SpringMVC允许开发者通过配置不同的控制器、视图解析器、拦截器等来灵活地控制请求的处理流程。 **...

Global site tag (gtag.js) - Google Analytics