import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map.Entry;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.wrt.zjg.webservices.model.FtpModel;

public class JavaToXML {

public void BuildJsonToXMLDoc(JSONObject resMain) throws Exception {
//String xmlPath = "E:/test/";//XML保存路径
String xmlPath = this.getClass().getClassLoader().getResource("../../").getPath().replace("api_zjg_port/", "")
+ "/zjgFile/messageXML/";//XML保存路径
String billNo = "";
String currTime = "";

// 创建根节点 并设置它的属性 ;
Element root = new Element("CAR_INFO");
// 将根节点添加到文档中;
Document Doc = new Document(root);
// 创建节点 BILL_INFO;
Element billInfoElems = new Element("BILL_INFO");
// 给 BILL_INFO 节点添加子节点并赋值;
System.out.println(resMain.toString());

String carInfo = resMain.getString("CAR_INFO");
JSONObject carInfoObj = JSONObject.parseObject(carInfo);
String billInfo = carInfoObj.getString("BILL_INFO");
JSONObject billInfoObj = JSONObject.parseObject(billInfo);
for(Entry<String, Object> entry : billInfoObj.entrySet()) {
billInfoElems.addContent(new Element(entry.getKey()).setText(billInfoObj.getString(entry.getKey())));
if(entry.getKey().equals("BILL_NO")) {
billNo = billInfoObj.getString("BILL_NO");
}
if(entry.getKey().equals("SEND_TIME")) {
currTime = billInfoObj.getString("SEND_TIME");
}
}
root.addContent(billInfoElems);

String carDetail = carInfoObj.getString("CAR_DETAIL");
JSONArray carDetailArr = JSONArray.parseArray(carDetail);
if(carDetailArr.size() > 0) {
// 创建节点 CAR_DETAIL;
for(int i = 0; i < carDetailArr.size(); i++) {
JSONObject detail = carDetailArr.getJSONObject(i);

Element carInfoElems = new Element("CAR_DETAIL");
for(Entry<String, Object> entry : detail.entrySet()) {
// 给 CAR_DETAIL 节点添加子节点并赋值;
carInfoElems.addContent(new Element(entry.getKey()).setText(detail.getString(entry.getKey())));
}
root.addContent(carInfoElems);
}
}
Calendar Cld = Calendar.getInstance();
int MI = Cld.get(Calendar.MILLISECOND);

// 输出 books.xml 文件;
// 使xml文件 缩进效果
Format format = Format.getPrettyFormat();
XMLOutputter XMLOut = new XMLOutputter(format);

System.out.println("文件名称:" + xmlPath + billNo + "-" + currTime + MI + ".xml");
XMLOut.output(Doc, new FileOutputStream(xmlPath + billNo + "-" + currTime + MI + ".xml"));
System.out.println("文件已生成");

FtpModel fm = new FtpModel();
fm.setIpAddr("192.168.1.252");
fm.setUserName("ftp");
fm.setPwd("ftp12345");
fm.setPath("/temp/zjg/messageXML/");
FtpUtil.connectFtp(fm);
File file = new File(xmlPath + billNo + "-" + currTime + MI + ".xml");
FtpUtil.upload(file);
}

public void BuildXMLDoc() throws Exception {
// 创建根节点 并设置它的属性 ;
Element root = new Element("CAR_INFO");
// 将根节点添加到文档中;
Document Doc = new Document(root);
// 创建节点 BILL_INFO;
Element billInfoElems = new Element("BILL_INFO");
// 给 BILL_INFO 节点添加子节点并赋值;
billInfoElems.addContent(new Element("BUSI_TYPE").setText("BID_A"));
billInfoElems.addContent(new Element("SHIP_NAME").setText("集装箱"));
billInfoElems.addContent(new Element("VOYAGE_NO").setText("CZ"));
billInfoElems.addContent(new Element("BILL_NO").setText("YMLUW190205735"));
billInfoElems.addContent(new Element("WHARF_NAME").setText("张家港保税港务有限公司"));
billInfoElems.addContent(new Element("SEND_TIME").setText("20170419151921"));
root.addContent(billInfoElems);

// 创建节点 CAR_DETAIL;
Element carInfoElems = new Element("CAR_DETAIL");
// 给 CAR_DETAIL 节点添加子节点并赋值;
carInfoElems.addContent(new Element("VIN_NO").setText("5TFDY5F19HX616824"));
carInfoElems.addContent(new Element("RFID").setText("888820160822000000003747"));
carInfoElems.addContent(new Element("AREA_NO").setText("A23901"));
carInfoElems.addContent(new Element("OCCUR_TIME").setText("20170419151905"));
root.addContent(carInfoElems);
// 输出 books.xml 文件;
// 使xml文件 缩进效果
Format format = Format.getPrettyFormat();
XMLOutputter XMLOut = new XMLOutputter(format);

Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
SimpleDateFormat sdFormat = new SimpleDateFormat("yyyyMMddhhmmssSSS");
String myTime = sdFormat.format(date);
XMLOut.output(Doc, new FileOutputStream("E:/test/5TFDY5F19HX616824-" + myTime + ".xml"));
System.out.println("文件已生成");

FtpModel fm = new FtpModel();
fm.setIpAddr("192.168.1.252");
fm.setUserName("ftp");
fm.setPwd("ftp12345");
fm.setPath("/temp/zjg/messageXML/");
FtpUtil.connectFtp(fm);
File file = new File("E:/test/5TFDY5F19HX616824-" + myTime + ".xml");
FtpUtil.upload(file);
}

public static void main(String[] args) {
/*try {
JavaToXML j2x = new JavaToXML();
System.out.println("正在生成 xml文件...");
j2x.BuildXMLDoc();
} catch (Exception e) {
e.printStackTrace();
}*/
}
}

java生成xml的更多相关文章

  1. Java生成XML文件

    我们在数据库中的数据可以将其提取出来生成XML文件,方便传输.例如数据库中有Admin这张表: 我们写一个java类表示admin数据: package xmlDom.vo; import java. ...

  2. Java生成XML文件与XML文件的写入

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6651643.html  既然能在代码中解析XML文档获取数据,当然也能通过代码动态生成XML文档了. 与解析X ...

  3. java 生成xml

    生成xml @Test public void parseApplicationConfigXML(){ try { SAXReader sax = new SAXReader(); Document ...

  4. java 生成xml文件

    这里也使用的是import org.w3c.dom.Document; 首先创建document对象,给该对象赋值,然后将document对象使用transformer的transformer转换方法 ...

  5. java注解生成xml和包含CDATA问题

    百度java生成xml,有一大推的文章,主要的生成方式一种使用Dom4J ,还有一种使用Jdk自带注解类! 下面主要整理我注解类的使用,(可以参考这篇文章Dom4J生成xml和包含CDATA问题)和x ...

  6. java 解析并生成 XML

    在 java 中使用 Dom4j 解析 XML 对 XML 文件的解析,通常使用的是 Dom4j 和 jdom 作为XML解析工具. 在此只介绍下 Dom4j 对 XML 文件的解析使用方法. 1. ...

  7. Java解析和生成XML

    1.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...

  8. 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  9. Java之JDOM生成XML和解析

    一.生成XML文件 1.JDOM是对Java原始的类进行了封装.让解析XML文件变得很方便 2.创建一个XML文件的根节点: Element root = new Element("HD&q ...

随机推荐

  1. xmind8 Mac破解版(思维导图) 附序列号

    链接: https://pan.baidu.com/s/1PNdLRGpz_jhfPmWAIbLRfw 提取码: ruvm 复制这段内容后打开百度网盘手机App,操作更方便哦 小伙伴们XMind 8 ...

  2. Linux下Eclipse连接小米手机真机调试

    以前用Ubuntu 12.04可以真机调试,连上手机就可以了,上次看pear os 好看于是下了个玩玩(界面风格像mac 买不起,仿得起),这次想开发安卓发现真机调试不了了...于是乎各种找资料,各种 ...

  3. HDU_1542_(树状数组)

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  4. 【git】搭建git服务器

    在 Linux 下搭建 Git 服务器 目录 ① 安装 Git ② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码 ③ 服务器端创建 Git 仓库 ④ 客户端 clon ...

  5. 谈谈如何来查看GC日志

    一.首先来看一下JVM中的GC有哪几种类型? 1.-XX:UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后,使用Serial+Serial Old收集器组合进行垃圾收集. ...

  6. CAD参数绘制直径标注(网页版)

    主要用到函数说明: _DMxDrawX::DrawDimDiametric 绘制一个直径标注.详细说明如下: 参数 说明 DOUBLE dChordPointX 在被标注的曲线上的第一个点X值 DOU ...

  7. git 提交运用vim编辑器

    git  commit -m 默认使用nano,觉得不爽,改成vim吧.在 .gitconfig (在根目录下)的  [core] 段中加上 editor=vim . 或:$git config -- ...

  8. apt-get update 报错 W: Unknown Multi-Arch type 'no' for package 'compiz-core'

    源 #deb包 deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http:// ...

  9. PHP Web开发入门流程

    在学习WEB开发前,至少有一个对C或者计算机编程任何一种语言的基本学习,这会对你以后的开发有一定的启蒙作用. 一.Web开发入门 推荐学习网址: http://www.w3school.com.cn/ ...

  10. ms_sql 触发器记录表字段数据变化的日志 -针对一张表操作

    create table sto (id int not null, -- 主键字段 de datetime -- 被跟踪的字段 constraint pk_sto primary key(id)) ...