`

XML -> xsd -> Java

    博客分类:
  • Java
 
阅读更多

XML Schema Generator
http://www.xmlforasp.net/CodeBank/System_Xml_Schema/BuildSchema/BuildXMLSchema.aspx

http://www.flame-ware.com/products/xml-2-xsd/default.aspx


XSD to Java Object
xjc xxx.xsd -d src -p com.xxx

 

 比如有如下XML文件:

<?xml version="1.0" ?>
<customers>
	<customer>
		<number>0001</number>
		<name>小白</name>
		<score>88.0</score>
	</customer>
	<customer>
		<number>0002</number>
		<name>小红</name>
		<score>90.0</score>
	</customer>
	<customer>
		<number>0003</number>
		<name>小黑</name>
		<score>66.0</score>
	</customer>
	<customer>
		<number>0004</number>
		<name>小花</name>
		<score>77.0</score>
	</customer>
</customers>

 

使用上面给出的链接生成如下XSD:

<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="customers" type="customers" />
  <xsd:complexType name="customers">
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" name="customer" type="customer" />
    </xsd:sequence>
  </xsd:complexType>
  <xsd:complexType name="customer">
    <xsd:sequence>
      <xsd:element name="number" type="xsd:int" />
      <xsd:element name="name" type="xsd:string" />
      <xsd:element name="score" type="xsd:decimal" />
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

 

再通过XJC工具将该XSD转换成对应的JAVA对象,那么我们就可以直接通过这些对象来获取到XML里面的数据了。下面为测试类代码:

package com.zzt.test;

import java.io.File;
import java.util.List;

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

import com.zzt.model.Customer;
import com.zzt.model.Customers;

public class XMLTest {
   
	public static void main(String[] args) throws JAXBException {
		JAXBContext context = JAXBContext.newInstance(Customers.class);
		Unmarshaller unmarshaller = context.createUnmarshaller();
		File file = new File("student.xml");
		Customers customers = (Customers)unmarshaller.unmarshal(file);
		List<Customer> cuList = customers.getCustomer();
		for (Customer customer : cuList) {
			System.out.println("number:"+customer.getNumber()+"  name:"+customer.getName()+" score:"+customer.getScore());
		}
	}
}

 

整个测试Demo可查看附件。另外通过Properties来配置数据,方式如下:

customers.customer1.number=001
customers.customer1.name=\u5C0F\u767D
customers.customer1.score=88.0
customers.customer2.number=002
customers.customer2.name=\u5C0F\u7EA2
customers.customer2.score=90.0
customers.customer3.number=003
customers.customer3.name=\u5C0F\u9ED1
customers.customer3.score=66.0
customers.customer4.number=004
customers.customer4.name=\u5C0F\u82B1
customers.customer4.score=77.0

 

对应的从该属性文件中读取数据的Demo:

package com.zzt.test.properties;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;

public class PropertiesTest {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		PropertiesTest test = new PropertiesTest();
		Properties properties = test.getProperties("student.properties");
		for (int i = 0; i < properties.size() / 3; i++) {
			System.out.println(properties.getProperty("customers.customer"+(i+1)+".number")
					+ "\t" + properties.getProperty("customers.customer"+(i+1)+".name")
					+ "\t" + properties.getProperty("customers.customer"+(i+1)+".score"));
		}

	}

	public Properties getProperties(String file) throws IOException {
		Properties properties = new Properties();
		InputStream fis = null;
		try {
			ResourceLoader loader = new DefaultResourceLoader();
			fis = loader.getResource(file).getInputStream();
			properties.load(fis);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fis != null) {
				fis.close();
			}
		}
		return properties;
	}
}

 

 

对于项目:

使用第一个链接,然后 选择 Separate Complex Types, 讲 Type" 替换为 " (去掉Type)

在执行上面操作时,可以直接看XML里面是否含有Type属性,如果没有就可以全部替换。

 

生成POJO之后,手动添加根节点,比如:

@XmlRootElement(name = "TestCases")

分享到:
评论

相关推荐

    根据XML生成xsd

    XML生成XSD xml生成xsd 生成xsd...java -jar trang.jar xml文件绝对路径 要生成的xsd文件绝对路径 例如在当前目录有文件aaa.xml,需要生成xsd文件名为aaa,并存放在当前目录: java -jar trang.jar aaa.xml aaa.xsd

    JAVA web.xml配置详解

    &lt;?xml version="1.0" encoding="UTF-8"?...&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web...

    XStream <--> Java 对象序列化为 XML 互换

    XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。 和其他序列化工具相比,XStream 有三个突出的特点: XStream 不关心序列化/逆序列化的类的字段的...

    eclipse 优化

    5. **关闭警告提示**:在`Windows -&gt; Preferences -&gt; XML -&gt; XML Files -&gt; Validate files`中,选择`Ignore`来忽略无语法约束(DTD或XML schema)的文档警告。 6. **关闭自动更新检查**:为了减少不必要的网络请求...

    关于Spring的spring-beans-xsd和tx-xsd aop-xsd等

    这些XML配置文件依赖于特定的XSD(XML Schema Definition)文件来提供语法验证和代码编辑器的自动提示功能。在给定的压缩包中,包含了`spring-beans-3.0.xsd`、`spring-context-3.0.xsd`、`spring-aop-3.0.xsd`和`...

    spring-jdbc-4.2.xsd.zip

    -- 配置DataSource --&gt; &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt; &lt;!-- 数据源配置 --&gt; &lt;/bean&gt; &lt;!-- 配置JdbcTemplate --&gt; ...

    cas 配置client 1.0 &2.0 及proxy DEMO 说明

    -- the URL to watch for PGTIOU/PGT responses from the CAS server --&gt; &lt;init-param&gt; &lt;param-name&gt;allowedProxyChains&lt;/param-name&gt; &lt;param-value&gt;http://www.testd.com:8080/testd&lt;/param-value&gt; ...

    emf-sdo-xsd-SDK-2.3.2.zip

    EMF允许开发者以一种声明性的方式定义数据结构,并自动生成对应的Java类和XML Schema,从而简化了数据处理和交换。 3. **SDO(Service Data Objects)**: SDO是Oracle公司提出的一种数据访问标准,它定义了一组...

    xml文件转xsd文件

    有了XSD文件,开发者可以使用Java API如JAXB(Java Architecture for XML Binding)来自动将XML映射为Java对象,简化数据处理。JAXB允许我们根据XSD文件自动生成Java类,这样在解析XML时,可以直接将XML元素转化为...

    生活轨迹SSH服务端

    -- &lt;param-value&gt;/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml&lt;/param-value&gt; --&gt; &lt;param-value&gt;classpath:beans.xml&lt;/param-value&gt; &lt;/context-param&gt; &lt;filter&gt; &lt;filter-name&gt;...

    maven的优缺点 项目

    |--&gt;|--&gt;main|--&gt;java:代码 |--&gt;|--&gt;main|--&gt;resources:配置文件 |--&gt;|--&gt;test:测试的代码,junit |--&gt;|--&gt;test|--&gt;java:代码 |--&gt;|--&gt;test|--&gt;resources:配置文件 |--&gt;Target:编译后的文件 |--&gt;|--&gt;classes:代码编译...

    xml生成xsd工具

    xml生成xsd 使用方法:java -jar trang.jar EchoRequest.xml EchoRequest.xsd

    java生成xsd,xml示例

    在Java开发中,XML(可扩展标记语言)和XSD(XML Schema定义)是常见的数据交换格式和技术。XML用于结构化数据的存储和传输,而XSD则为XML文档提供了语义验证的规则。本教程将详细介绍如何在Java环境中生成XML和XSD...

    重装myeclipse后常用的设置模板

    - 在`Java -&gt; Installed JREs`中添加所需版本的JRE。 - 配置Tomcat服务器,如果需要,可以去除MyEclipse自带的Tomcat。 6. **字体设置(仅适用于Win7)**: - 在`C:\Windows\Fonts`中找到`Courier New`字体,...

    spring3.2+strut2+hibernate4

    -- 此处hibernate 的映射 采用的是.xml 配置同则应设置&lt;value&gt;具体配置文件名(*.hbm.xml)&lt;/value&gt;--&gt; &lt;/list&gt; &lt;/property&gt; &lt;/bean&gt; &lt;!-- 事务配置管理 --&gt; ...

    一个简单的Acegi入门实例

    -- web.xml文件 --&gt; &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation...

    protoc-gen-grpc-java-1.40.0-osx-aarch_64.exe

    protoc-gen-grpc-java-1.40.0-osx-aarch_64 ...&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd...

    xml转xsd,trang.jar最新版

    这是从google的地址下载的trang,最新版,根目录下的jar可根据xml生成xsd文件,下面介绍使用: 把jar放在 d:\trang 下 ...命令如:java -jar trang.jar -I xml -O xsd D:\trang\person.xml D:\person.xsd

    castor1.4 xsd生成java

    在XML Schema(XSD)广泛应用于定义XML数据结构的今天,Castor提供了一个方便的方法,将XSD文件自动转化为Java类,使得开发者能够更轻松地处理XML数据。以下是关于"Castor 1.4 xsd生成java"的相关知识点: 1. **...

Global site tag (gtag.js) - Google Analytics