精华内容
下载资源
问答
  • XML 节点名称 要与Bean相同 该项目 包含测试代码 可以演示。 节点属性 可以为String 多层节点 请用List表示
  • XStream 用法详解 java XML 互换 现在 WEB数据交换的时代,传送XML目前是一个比较流行的方式,具有统一的规则约束,为实现后台接口提供了一个很方便的实现。 我编写了一个 接收XML并转换成所需要的Object...

    XStream 用法详解 java 类与 XML 互换

    现在 WEB数据交换的时代,传送XML目前是一个比较流行的方式,具有统一的规则约束,为实现后台接口提供了一个很方便的实现。

    我编写了一个 接收XML并转换成所需要的Object类的 小例子,希望能够对做互联网数据传输、接口调用的朋友有所帮助。

    首先要导入jar包xstream-1.4.3-sources.jar 和 xmlpull-1.1.3.1.jar 两个包;

    其次是预备一个 XML 事例

    <config>
    <span style="white-space:pre">	</span><client type="8888" osversion="9999" version="123" oemtag="5555" area="areacode"/>
    <span style="white-space:pre">	</span><protocol>1.10</protocol>
    <span style="white-space:pre">	</span><sign value="asdfasdf"/>
    <span style="white-space:pre">	</span><vientiance version="version"/>
    </config>

    其次 就是 按照 XML节点的顺序 从外 到内 编写 java PO类,此实例的目的是将上面的XML转换为 AllnewstateRQ 这个实体类,然后从里面打印出测试数据。

    下面依次是  config节点 对应的 AllnewstateRQ类 ; client 节点 对应的 Client 类;sign 节点对应的 Sign类;vientiance 节点 对应的 Vientiance类。

    package com.wgq.test09_xml;
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    @XStreamAlias("config")
    public class AllnewstateRQ {
    	//当节点下有独立属性的时候,需要创建一个独立的类用来保存节点内的属性
    	private Client client = new Client();
    	private Sign sign = new Sign();
    	private Vientiance vientiance = new Vientiance();
    	//当节点下没有属性,直接由StringValue的时候可直接创建String类型属性
    	private String protocol;
    	public Client getClient() {
    		return client;
    	}
    	public void setClient(Client client) {
    		this.client = client;
    	}
    	public Sign getSign() {
    		return sign;
    	}
    	public void setSign(Sign sign) {
    		this.sign = sign;
    	}
    	public Vientiance getVientiance() {
    		return vientiance;
    	}
    	public void setVientiance(Vientiance vientiance) {
    		this.vientiance = vientiance;
    	}
    	public String getProtocol() {
    		return protocol;
    	}
    	public void setProtocol(String protocol) {
    		this.protocol = protocol;
    	}
    }
    

    package com.wgq.test09_xml;
    
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
    
    @XStreamAlias("client")
    public class Client {
    
    	@XStreamAsAttribute	//对属性值进行注解
    	private String type;//此时类中的属性名要和xml内的属性名相对应
    
    	@XStreamAsAttribute
    	private String osversion;
    
    	@XStreamAsAttribute
    	private String version;
    
    	@XStreamAsAttribute
    	private String oemtag;
    
    	@XStreamAsAttribute
    	private String area;
    
    	public String getType() {
    		return type;
    	}
    
    	public void setType(String type) {
    		this.type = type;
    	}
    
    	public String getOsversion() {
    		return osversion;
    	}
    
    	public void setOsversion(String osversion) {
    		this.osversion = osversion;
    	}
    
    	public String getVersion() {
    		return version;
    	}
    
    	public void setVersion(String version) {
    		this.version = version;
    	}
    
    	public String getOemtag() {
    		return oemtag;
    	}
    
    	public void setOemtag(String oemtag) {
    		this.oemtag = oemtag;
    	}
    
    	public String getArea() {
    		return area;
    	}
    
    	public void setArea(String area) {
    		this.area = area;
    	}
    
    }

    package com.wgq.test09_xml;
    
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
    
    @XStreamAlias("sign") //此处要对应节点的名称
    public class Sign {
    	@XStreamAsAttribute
    	private String value;//此处对应节点内属性名称
    	public String getValue() {
    		return value;
    	}
    	public void setValue(String value) {
    		this.value = value;
    	}
    }
    

    package com.wgq.test09_xml;
    
    import com.thoughtworks.xstream.annotations.XStreamAlias;
    import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
    
    @XStreamAlias("vientiance")
    public class Vientiance {
    	@XStreamAsAttribute
    	private String version;
    	public String getVersion() {
    		return version;
    	}
    	public void setVersion(String version) {
    		this.version = version;
    	}
    }
    

    测试main方法

    package com.wgq.test09_xml;
    
    import com.thoughtworks.xstream.XStream;
    import com.thoughtworks.xstream.io.xml.DomDriver;
    
    public class TestStream {
    
    	public static void main(String[] args) {
    		String reqXml = getXml();
    		XStream xs = new XStream(new DomDriver()); 
    		xs.processAnnotations(new Class[]{AllnewstateRQ.class,Client.class,Sign.class,Vientiance.class});
    		Object obj = xs.fromXML(reqXml);
    		AllnewstateRQ allnewstateRQ = (AllnewstateRQ) obj;
    		System.out.println(allnewstateRQ.getProtocol());
    		System.out.println(allnewstateRQ.getClient().getArea());
    		System.out.println(reqXml);
    
    	}
    	
    	static String getXml(){
    		StringBuilder str = new StringBuilder();
    		str.append("")
    		.append("<config>")
    		.append("<client type=\"8888\" osversion=\"9999\" version=\"123\" oemtag=\"5555\"  area=\"areacode\" />")
    		.append("<protocol>1.10</protocol>")
    		.append("<sign value=\"asdfasdf\" />")
    		.append("<vientiance version=\"version\" />")
    		.append("</config>")
    		;
    		return str.toString();
    	}
    
    }
    


    输出结果:

    1.10
    areacode
    <config><client type="8888" osversion="9999" version="123" oemtag="5555"  area="areacode" /><protocol>1.10</protocol><sign value="asdfasdf" /><vientiance version="version" /></config>
    



    感谢 博主德莫罗 的 http://chen-rojer-gmail-com.iteye.com/blog/1435254 范例,

    我参考 德莫罗 的写的这个 单元测试,将XML 转换成 指定的Object类的小例子.


    展开全文
  • Java代码实体类生成SQL语句(Java实体类转数据库)

    万次阅读 多人点赞 2021-07-19 17:43:04
    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可。 代码如下: ...

    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可。

    下载:https://download.csdn.net/download/weixin_44893902/20367422
    在这里插入图片描述

    代码如下:

    package Main;
    
    import javax.xml.bind.annotation.XmlElement;
    import java.io.*;
    import java.lang.annotation.Annotation;
    import java.lang.reflect.Field;
    
    public class GenerateSqlFromEntityUtil {
    
    	public static void main(String[] a) {
    		// 实体类的位置
    		Class klass = cn.ac.azure.model.User.class;
    		// 生成的sql语句的位置
    		String outputPath = "D:/outSql/User.txt";
    		generateTableSql(klass, outputPath, null);
    		System.out.println("生成结束");
    	}
    
    	public static void writeFile(String content, String outputPath) {
    		File file = new File(outputPath);
    		System.out.println("文件路径: " + file.getAbsolutePath());
    		// 输出文件的路径
    		if (!file.getParentFile().exists()) {
    			file.getParentFile().mkdirs();
    		}
    		FileOutputStream fos = null;
    		OutputStreamWriter osw = null;
    		BufferedWriter out = null;
    
    		try {
    			// 如果文件存在,就删除
    			if (file.exists()) {
    				file.delete();
    			}
    			file.createNewFile();
    			fos = new FileOutputStream(file, true);
    			osw = new OutputStreamWriter(fos);
    			out = new BufferedWriter(osw);
    			out.write(content);
    			// 清空缓冲流,把缓冲流里的文本数据写入到目标文件里
    			out.flush();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    				fos.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    
    			try {
    				osw.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    
    			try {
    				out.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	public static void generateTableSql(Class obj, String outputPath, String tableName) {
    		// tableName 如果是 null,就用类名做表名
    		if (tableName == null || tableName.equals("")) {
    			tableName = obj.getName();
    			tableName = tableName.substring(tableName.lastIndexOf(".") + 1);
    		}
    		// 表名用大写字母
    		tableName = tableName.toUpperCase();
    
    		Field[] fields = obj.getDeclaredFields();
    		Object param;
    		String column;
    
    		StringBuilder sb = new StringBuilder();
    
    		sb.append("drop table if exists ").append(tableName).append(";\r\n");
    
    		sb.append("\r\n");
    
    		sb.append("create table ").append(tableName).append("(\r\n");
    
    		System.out.println(tableName);
    
    		boolean firstId = true;
    
    		for (int i = 0; i < fields.length; i++) {
    			Field f = fields[i];
    
    			column = f.getName();
    
    			System.out.println(column + ", " + f.getType().getSimpleName());
    
    			param = f.getType();
    			sb.append(column); // 一般第一个是主键
    
    			if (param instanceof Integer) {
    				sb.append(" INTEGER ");
    			} else {
    				// 注意:根据需要,自行修改 varchar 的长度。这里设定为长度等于 50
    				int length = 50;
    				sb.append(" VARCHAR(" + length + ")");
    			}
    
    			if (firstId == true) {
    				sb.append(" PRIMARY KEY ");
    				firstId = false;
    			}
    
    			// 获取字段中包含 fieldMeta 的注解
    
    			// 获取属性的所有注释
    			Annotation[] allAnnotations = f.getAnnotations();
    
    			XmlElement xmlElement = null;
    			Class annotationType = null;
    
    			for (Annotation an : allAnnotations) {
    				sb.append(" COMMIT '");
    				xmlElement = (XmlElement) an;
    				annotationType = an.annotationType();
    				param = ((XmlElement) an).name();
    				System.out.println("属性 " + f.getName() + " ----- 的注释类型有: " + param);
    				sb.append(param).append("'");
    			}
    
    			if (i != fields.length - 1) { // 最后一个属性后面不加逗号
    				sb.append(", ");
    			}
    
    			sb.append("\n");
    		}
    
    		String sql = sb.toString();
    
    		sql = sb.substring(0, sql.length() - 1) + "\n) " + "ENGINE = INNODB DEFAULT CHARSET = utf8;";
    
    		writeFile(sql, outputPath);
    	}
    }
    
    展开全文
  • Java开发中xml和javabean实体类之间的相互转换 目录 Java开发中xml和javabean实体类之间的相互转换 1.xml转javabean 1.1 xml格式如下,只有一层的: 1.2有两层的xml, 2.vo转xml 1.xml转javabean 1.1 xml...

    Java开发中xml和javabean实体类之间的相互转换

    目录

    Java开发中xml和javabean实体类之间的相互转换

    1.xml转javabean

    1.1 xml格式如下,只有一层的:

    1.2有两层的xml,

    2.vo转xml


    1.xml转javabean

    1.1 xml格式如下,只有一层的:

    <?xml version='1.0' encoding='UTF-8'?>
    <root>
    <company>10000</company>
    <descr>公司</descr>
    <descrshort>公司简称</descrshort>
    <country>国家</country>
    <phone>电话</phone>
    <fax>传真</fax>
    <address_code>邮编</address_code>
    <address_descr>注册地址</address_descr>
    <spg_legal>公司法人</spg_legal>
    <comemail>邮箱</comemail>
    </root>
    

    在实体类名上加注释:

    @XmlRootElement(name = "root")

    调用:

    MdmCorpVoList tmpRresvo = (MdmCorpVoList)getXmlUtil().convertXmlStrToObject(MdmCorpVoList.class, xml);

     

    /** 
         * 将String类型的xml转换成对象 
         */  
        public  Object convertXmlStrToObject(Class clazz, String xmlStr) {  
            Object xmlObject = null;  
            try {  
                JAXBContext context = JAXBContext.newInstance(clazz);  
                // 进行将Xml转成对象的核心接口  
                Unmarshaller unmarshaller = context.createUnmarshaller();  
                StringReader sr = new StringReader(xmlStr);  
                xmlObject = unmarshaller.unmarshal(sr);  
                
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
            return xmlObject;  
        }

    1.2有两层的xml,

    如下:

    <?xml version='1.0' encoding='UTF-8'?>
    <root>
    <line>
    <company>10000</company>
    <descr>公司</descr>
    <descrshort>公司简称</descrshort>
    <country>国家</country>
    <phone>电话</phone>
    <fax>传真</fax>
    <address_code>邮编</address_code>
    <address_descr>注册地址</address_descr>
    <spg_legal>公司法人</spg_legal>
    <comemail>邮箱</comemail>
    </line>
    </root>
    

    1.2.1建立两个vo类:

    第一个:

    @XmlAccessorType(XmlAccessType.FIELD)
    public class MdmCorpVo {
    实体属性
    get
    set方法
    }

    第二个:

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement(name = "root")
    @XmlType(propOrder = {})
    public class MdmCorpVoList {
    
    	@XmlElement(name = "line")
    	private List<MdmCorpVo> listCorpVo;
    
    	public List<MdmCorpVo> getListCorpVo() {
    		return listCorpVo;
    	}
    
    	public void setListCorpVo(List<MdmCorpVo> listCorpVo) {
    		this.listCorpVo = listCorpVo;
    	}
    	
    	
    }
    

    再使用方法1.1中的调用就好了,注意这个转化只能xml和vo一一对应

    2.vo转xml

    xml格式如下:也有两层:

    <?xml version='1.0' encoding='UTF-8'?>
    <root>
    <head>
    <success>1</success>
    <errcode></errcode>
    <message></message>
    </head>
    </root>
    

     

    实体类1:

    @javax.xml.bind.annotation.XmlRootElement(name="root")
    public class ReturnMdmVo {
    
    	private  String success;
    	
    	private  String errcode;
    	
    	private  String message;
    get
    set方法
    }

     

    实体类2:

    @XmlRootElement(name="root")
    public class ReturnMdmVoList {
    
    	private List<ReturnMdmVo>  returnMdmVolist;
    
    //	@XmlElementWrapper(name = "head")
    	@XmlElement(name = "head")
    	public List<ReturnMdmVo> getReturnMdmVolist() {
    		return returnMdmVolist;
    	}
    
    
    	public void setReturnMdmVolist(List<ReturnMdmVo> returnMdmVolist) {
    		this.returnMdmVolist = returnMdmVolist;
    	}
    	
    }
    

     

    调用:

    ReturnMdmVoList listVo=new ReturnMdmVoList();
    		List<ReturnMdmVo>  returnMdmVolist=new ArrayList<ReturnMdmVo>();
    		returnMdmVolist.add(resVo);
    		listVo.setReturnMdmVolist(returnMdmVolist);
    		String result=getXmlUtil().convertToXml(listVo);
    /** 
         * 将对象直接转换成String类型的 XML输出 
         *  
         * @param obj 
         * @return 
         */  
        public  String convertToXml(Object obj) {  
            // 创建输出流  
            StringWriter sw = new StringWriter();  
            try {  
                // 利用jdk中自带的转换类实现  
                JAXBContext context = JAXBContext.newInstance(obj.getClass());  
      
                Marshaller marshaller = context.createMarshaller();  
                // 格式化xml输出的格式  
                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,  
                        Boolean.TRUE);  
                // 将对象转换成输出流形式的xml  
                marshaller.marshal(obj, sw);  
            } catch (JAXBException e) {  
                e.printStackTrace();  
            }  
            return sw.toString().replace("standalone=\"yes\"", "");  
        } 

     

    展开全文
  • 通过Xml报文生成Java实体类

    千次阅读 2019-05-31 17:10:50
    通过Xml报文生成Java实体类 ...通过trang.jar将Xml转成Xsd(xsd文件就是xml的约束文件),再用 Java 自带的 JAXB 工具去生成 Java实体类 步骤如下: 将xml转换成xsd 方法一:通过trang.jar转换 java -jar t...

    通过Xml报文生成Java实体类

    声明:文章中部分文字及图片来自http://www.pianshen.com/article/5339168945/,特此感谢!!

    通过trang.jar将Xml转成Xsd(xsd文件就是xml的约束文件),再用 Java 自带的 JAXB 工具去生成 Java实体类

    步骤如下:

    1. 将xml转换成xsd
      方法一:通过trang.jar转换
      java -jar trang.jar (xxx.xml) (xxx.xsd)
      方法二:用工具XMLSpy,将xml报文生成一份xsd出来,我用的工具是 XMLSpy ,如下图,在 “文件” 处,选择新建或打开你的xml报文之后,点击 DTD/Schema 这一项菜单项
      在这里插入图片描述
      然后如下图,选择 生成DTD/Schema 这一项,
      在这里插入图片描述
      之后会弹出如下图的对话框,因为目的是要生成 xsd文件 ,就要选择 W3C Schema 这一项,其他的项默认就可以了,然后点击确定
      在这里插入图片描述
      最后,会弹出让你保存的目录的对话框,找到自己方便的目录,点击确定保存即可。

    2. 将xsd生成Java实体类
      用Java自带的JAXB工具生成实体类
      在xsd的目录下,运行xjc xxx.xsd命令即可

    展开全文
  • 用JAXB将xml报文生成java实体类

    千次阅读 2019-01-11 19:21:30
    前言   在开发ws接口,或者需要用到xml做载体的时候,经常需要将客户提供的测试xml报文,转化成我们java...  之前已经有过一次用JAXB将xml报文java实体类的经历了,但是做完之后也没有做个笔记 ,导致再...
  • java xml实体类转换

    千次阅读 2018-01-05 16:07:33
    @XmlRootElement注解定义xml的根节点 通过name改变根节点的xml值  @XmlRootElement(name = "amimal_test") @XmlType注解 指定序列生成的xml节点顺序  @XmlType(propOrder={"id","age","name","bir
  • XML文件数据转换为JAVA实体类

    千次阅读 2018-07-09 13:47:59
    以城市列表为例.citylist.xml&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;c c1="0"&gt; &lt;d d1="101280101" d2="广州" d3="...
  • 我开始用XStream,后来又根据网上的代码导入javax.xml.bind包来进行解析,但是这两种都会报错:Conversion to Dalvik format failed with error 1,我百了一下,也不是很明白,还请大家解答,先谢谢各位了。...
  • 这两天工作中用到web service来推送数据,涉及到xml的和java实体类的转换,总结一下理解和碰到的问题。 (一)、宝宝想得到下面这样的两个xml类型的字符串anth和args,来推送给第三方:&lt;?xml version="...
  • java实体转xml

    千次阅读 2017-11-23 17:02:47
    java实体转xml(jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换)
  • java将数据库表反射成java实体类xml中sql语句,如果使用的mybatis,生成基于原生的xml中sql操作语句,如insert、select、update语句。
  • 主要是用来实体类xml的相互转换, 如果需要将xml存进数据库,oracle建议使用 clob类型 这样直接可以当成字符串来使用首先需要引用包 需要的jar包如下: xpp3_min-1.1.4c.jar xstream-1.3.jar或者使用maven ...
  • java实体类xml之间的转换

    千次阅读 2018-06-25 16:45:24
    一、XStream的用途 ... XStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&
  • java进行xml实体类

    千次阅读 2019-03-15 21:25:47
    18年入职杭银,因业务需要,要与xml数据打交道.需求是进行xml解析.然后就用到了XStream与Jsoup解析xml的工具.这里总结一下. 1:相关依赖: &amp;lt;!--xstream相关依赖--&amp;gt; &amp;lt;dependency&...
  • 1.问题:如何将String类型的XML转化成JAVA实体类?2.源代码:public class TestXML { @SuppressWarnings("unchecked") public static void main(String[] args) { String xmlStr="<object>\n" + " <int
  • java实体类转换成xml格式

    千次阅读 2018-05-09 17:30:06
    package ... import java.io.StringReader; import java.io.StringWriter; import java.net.URL; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import ...
  • 复杂xml转化为java实体

    千次阅读 2018-09-19 11:11:10
    xml version="1.0" encoding="utf-8"?&gt;  &lt;alipay&gt;  &lt;is_success&gt;F&lt;/is_success&gt;  &lt;error&gt;TRADE_NOT_EXIS
  • Java实体类之间的相互转换

    千次阅读 2020-08-04 15:03:56
    在pom.xml配置文件中添加依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId>...创建第一个实体类School public class School { pr
  • users.xml文件示例 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;users&gt; &lt;user id="1"&gt; &lt;name&gt;张三&lt;/name&gt;...
  • 自动生成java实体类

    2018-05-25 10:46:00
    解压配置好generator.xml后,打开cmd,使用(说明.txt)中的命令。。就可以生成实体类了,哇哈哈哈。这样就可以根据数据库表自动生成java实体类~~
  • xmljava实体相互转化

    千次阅读 2016-08-17 16:56:27
    1、实体转换: public abstract class BuildXmlUtils {  /**  * 获得泛型实体  * @return  * @throws InstantiationException  * @throws IllegalAccessException  */  @SuppressWarni
  • 1.先编写要解析的xml文件: Allen ...2.编写要转换的实体类:PersonBean package com.xml.util; public class PersonBean { private String name; private String sex; private String age;
  • XML字符串转实体类

    千次阅读 2018-04-13 11:43:20
    //传入xml字符串 返回的实体类 private ReceiveXmlEntity XMLToEntity(String strXml) throws IOException { ReceiveXmlEntity msg = null; try { if (strXml.length() &lt;= 0 || strXml ...
  • 这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和...
  • Java实体类中封装其他实体类并引用

    千次阅读 2020-03-28 19:44:53
    在引用的时候有人会把二个表的数据全都封装在一个实体类中,然后在对这个实体类进行操作,但如果是三个表呢?四个表呢?还都封装在一个实体类吗?这样被封装的实体类的数据是不是太多了呢?而且也会照成层次不分,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 209,468
精华内容 83,787
关键字:

复杂的xml转java实体类

java 订阅