文档章节

JDOM生成XML文档(二)

AK灬
 AK灬
发布于 2016/05/06 18:07
字数 984
阅读 50
收藏 4
点赞 2
评论 0
package com.ninemax.util;

import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.jdom.Comment;
import org.jdom.DocType;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;

/**
 * 手动导出数据库数据(XML)
 * 
 * @author Darker
 * 
 */
public class ExportXmlUtil {

	public static void BulkExportXml() {
		
		SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
		
		Document doc = new Document();
		// 添加注释
		doc.addContent(new Comment("CreateTime:"+df.format(new Date())));
		
		Element root = new Element("ArticleSet");
		// 文档头声明
		doc.addContent(new DocType("ArticleSet", "WPRIM_2.dtd"));
		// 头节点添加到文档中
		doc.addContent(root);
		// 查询导出记录表
		Record exportLog = Db.findFirst("SELECT TOP 1 * FROM Wprim_Export_log ORDER BY id DESC ");
		// 查询article数据
		List<Record> articleList = Db.find("SELECT * FROM WSSARTICLE WHERE crtime>? ORDER BY crtime DESC",exportLog.getStr("export_time"));
		if(articleList!=null){
			// 添加节点
			for (Record articleRecord : articleList) {
				// Journal节点信息
				Record journalRecord = Db.findFirst("SELECT * FROM WSSJOURNAL WHERE JournalId=?",articleRecord.getInt("JID"));
				// Volume节点信息
				Record volumeRecord = Db.findFirst("SELECT * FROM WSSJOURNALVOLUME WHERE JID=?", articleRecord.getInt("JID"));
				Element article = new Element("Article");
				Element journal = new Element("Journal");
				journal.addContent(new Element("Country").setText(journalRecord.getStr("country")==""?"":journalRecord.getStr("country")));
				journal.addContent(new Element("PublisherName").setText(journalRecord.getStr("publisher")==""?"":journalRecord.getStr("publisher")));
				journal.addContent(new Element("JournalTitle").setText(journalRecord.getStr("journalTitle")==""?"":journalRecord.getStr("journalTitle")));
				journal.addContent(new Element("Issn").setText(journalRecord.getStr("ISSN") ==""?(journalRecord.getStr("EISSN") ==""?"":journalRecord.getStr("EISSN")) : journalRecord.getStr("ISSN")));
				journal.addContent(new Element("Volume").setText(volumeRecord.getStr("Volume")==""?"":journalRecord.getStr("volume")));
				journal.addContent(new Element("Issue").setText(volumeRecord.getStr("Issue")==""?"":journalRecord.getStr("IssuesNumber")));
				Element pubDate = new Element("PubDate");
				pubDate.addContent(new Element("Year").setText(String.valueOf(volumeRecord.getInt("PubYear"))==""?"":String.valueOf(volumeRecord.getInt("PubYear"))));
				pubDate.addContent(new Element("Month").setText(volumeRecord.getStr("PubMonth")==""?"":volumeRecord.getStr("PubMonth")));
				pubDate.addContent(new Element("Day").setText(volumeRecord.getStr("PubDay")==""?"":volumeRecord.getStr("PubDay")));
				journal.addContent(pubDate);
				article.addContent(journal);
				// article节点信息
				article.addContent(new Element("ArticleTitle").setText(articleRecord.getStr("ArticleTitle")==""?"":articleRecord.getStr("ArticleTitle")));
				article.addContent(new Element("VernacularTitle").setText(articleRecord.getStr("VernacularTitle")==""?"":articleRecord.getStr("VernacularTitle")));
				article.addContent(new Element("FirstPage").setText(articleRecord.getStr("FirstPage")==""?"":articleRecord.getStr("FirstPage")));
				article.addContent(new Element("LastPage").setText(articleRecord.getStr("LastPage")==""?"":articleRecord.getStr("LastPage")));
				article.addContent(new Element("Language").setText(articleRecord.getStr("Language")==""?"":articleRecord.getStr("Language")));
				Element authorList = new Element("AuthorList");
				// 特殊值Author处理
				String str = articleRecord.getStr("Author");
				
				if (str != null) {
					
					String[] authors = str.split(";");
					
					for (int j = 0; j < authors.length; j++) {
						Element author = new Element("Author");
						author.addContent(new Element("FirstName").setText((authors[j].split("-")[0]).split(" ")[0]==""?"":(authors[j].split("-")[0]).split(" ")[0]));
						author.addContent(new Element("MiddleName").setText((authors[j].split("-")[0]).split(" ")[1] ==""?"":(authors[j].split("-")[0]).split(" ")[1]));
						author.addContent(new Element("LastName").setText((authors[j].split("-")[0]).split(" ")[2] ==""?"":(authors[j].split("-")[0]).split(" ")[2]));
						author.addContent(new Element("Affiliation").setText(authors[j].split("-")[1] ==""?"":authors[j].split("-")[1]));
						authorList.addContent(author);
					}
				}
				Element author = new Element("Author");
				author.addContent(new Element("CollectiveName").setText(articleRecord.getStr("CollectiveName")==""?"":articleRecord.getStr("CollectiveName")));
				authorList.addContent(author);
				article.addContent(authorList);
				article.addContent(new Element("PublicationType").setText(articleRecord.getStr("PublicationType")==""?"":articleRecord.getStr("PublicationType")));
				Element articleIdList = new Element("ArticleIdList");
				articleIdList.addContent(new Element("ArticleId").setText(articleRecord.getStr("DOI")==""?"":articleRecord.getStr("DOI")).setAttribute("IdType", "doi"));
				articleIdList.addContent(new Element("ArticleId").setText(articleRecord.getStr("URL")==""?"":articleRecord.getStr("URL")).setAttribute("IdType", "url"));
				article.addContent(articleIdList);
				// 查询摘要记录表
				List<Record> summaryList=Db.find("SELECT * FROM Wprim_Summary WHERE article_id=?",articleRecord.getInt("id"));
				String str2="";
				for(Record summaryRecord:summaryList){
					
					str2+=summaryRecord.getStr("Title")+":"+summaryRecord.getStr("Content");
				}
				article.addContent(new Element("Abstract").setText(str2));
				Element keywordsList = new Element("KeywordsList");
				// 特殊值keyword处理
				String str3 = articleRecord.getStr("Keywords");

				if (str3 != null) {
					
					String[] keywords = str3.split(";");
					
					for (int k = 0; k < keywords.length; k++) {
						
						keywordsList.addContent(new Element("Keywords").setText(keywords[k]));
					
					}
				}	

				article.addContent(keywordsList);

				Element meSHList = new Element("MeSHList");
				// 处理MeSH
				String str4 = articleRecord.getStr("MeSH");

				if (str4 != null) {

					String[] MeSHList = str4.split(";");
					
					for (int l = 0; l < MeSHList.length; l++) {
						
						meSHList.addContent(new Element("MeSH").setText(MeSHList[l]));
						
					}
					
				} 
				article.addContent(meSHList);
				// 给父节点ArticleSet添加子节点Article
				root.addContent(article);
			}
			// 生成XML文档
			XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());
			try {
				xmlOut.output(doc, new FileOutputStream("D:\\AtricleXML.xml"));
				// 导出记录记入表Wprim_Export_Log中
				Record log = Db.findFirst("SELECT TOP 1 * FROM WSSARTICLE WHERE crtime>? ORDER BY crtime DESC",exportLog.getStr("export_time"));
				Record record = new Record().set("export_time",log.getStr("crtime"));
				Db.save("Wprim_Export_Log", record);
			} catch (Exception e) {
				System.err.println("XML文档生成失败...");
			}
		}else{
			System.err.println("没有新的论文生成...");
		}
		
	}

}

 

生成的XML文档内容:

<?xml version="1.0" encoding="UTF-8"?>
<!--CreateTime:2016-05-06 17:31:28.787-->
<!DOCTYPE ArticleSet SYSTEM "WPRIM_2.dtd">
<ArticleSet>
  <Article>
    <Journal>
      <Country>China</Country>
      <PublisherName>Publisher</PublisherName>
      <JournalTitle>JournalTitleNO.1ByDarker</JournalTitle>
      <Issn>2000-2000</Issn>
      <Volume />
      <Issue>10</Issue>
      <PubDate>
        <Year>2016</Year>
        <Month>05</Month>
        <Day>05</Day>
      </PubDate>
    </Journal>
    <ArticleTitle>Article TitleNO.4</ArticleTitle>
    <VernacularTitle>Vernacular TitleNO.4</VernacularTitle>
    <FirstPage>30</FirstPage>
    <LastPage>40</LastPage>
    <Language>Spanish</Language>
    <AuthorList>
      <Author>
        <FirstName>First1111</FirstName>
        <MiddleName>Middle1111</MiddleName>
        <LastName>Last1111</LastName>
        <Affiliation>Affiliation1111</Affiliation>
      </Author>
      <Author>
        <FirstName>First2222</FirstName>
        <MiddleName>Middle2222</MiddleName>
        <LastName>Last2222</LastName>
        <Affiliation>Affiliation2222</Affiliation>
      </Author>
      <Author>
        <FirstName>First3333</FirstName>
        <MiddleName>Middle3333</MiddleName>
        <LastName>Last3333</LastName>
        <Affiliation>Affiliation3333</Affiliation>
      </Author>
      <Author>
        <CollectiveName>CollectiveName444</CollectiveName>
      </Author>
    </AuthorList>
    <PublicationType>Publication Type444</PublicationType>
    <ArticleIdList>
      <ArticleId IdType="doi">ArticleId-DOI4444</ArticleId>
      <ArticleId IdType="url">http://www.baidu.com</ArticleId>
    </ArticleIdList>
    <Abstract>Abstract Title1111:words1111
Abstract Title2222:words2</Abstract>
    <KeywordsList>
      <Keywords>keywords1111</Keywords>
      <Keywords>keywords2222</Keywords>
    </KeywordsList>
    <MeSHList>
      <MeSH>MeSH33</MeSH>
      <MeSH>MeSH44</MeSH>
    </MeSHList>
  </Article>
  <Article>
    <Journal>
      <Country>China</Country>
      <PublisherName>Publisher</PublisherName>
      <JournalTitle>JournalTitleNO.1ByDarker</JournalTitle>
      <Issn>2000-2000</Issn>
      <Volume />
      <Issue>10</Issue>
      <PubDate>
        <Year>2016</Year>
        <Month>05</Month>
        <Day>05</Day>
      </PubDate>
    </Journal>
    <ArticleTitle>Article TitleNO.3</ArticleTitle>
    <VernacularTitle>Vernacular TitleNO.3</VernacularTitle>
    <FirstPage>20</FirstPage>
    <LastPage>30</LastPage>
    <Language>French</Language>
    <AuthorList>
      <Author>
        <FirstName>First111</FirstName>
        <MiddleName>Middle111</MiddleName>
        <LastName>Last111</LastName>
        <Affiliation>Affiliation111</Affiliation>
      </Author>
      <Author>
        <CollectiveName>CollectiveName333</CollectiveName>
      </Author>
    </AuthorList>
    <PublicationType>Publication Type333</PublicationType>
    <ArticleIdList>
      <ArticleId IdType="doi">ArticleId-DOI333</ArticleId>
      <ArticleId IdType="url">http://www.baidu.com</ArticleId>
    </ArticleIdList>
    <Abstract>Abstract Title111:words111</Abstract>
    <KeywordsList>
      <Keywords>keywords111</Keywords>
    </KeywordsList>
    <MeSHList>
      <MeSH>MeSH33</MeSH>
    </MeSHList>
  </Article>
 </ArticleSet>

 

企鹅:61489385

© 著作权归作者所有

共有 人打赏支持
AK灬

AK灬

粉丝 46
博文 340
码字总数 141472
作品 0
朝阳
后端工程师
四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SA...

Henrykin
2016/11/03
48
0
Java程序员从笨鸟到菜鸟之(二十七)XML之Jdom和DOM4J解析 .

jdom解析 JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实...

长平狐
2012/11/12
112
0
java 中jdom包的简单使用

1、jdom 1.1 是什么? 1.2 用来干什么? 1.3 怎么用? 1.4 使用后感悟和小结! 1.1 Jdom 是一种java工具包,利用纯Java技术对XML文档进行解析,生成,序列化和多种操作。 1.2 Jdom 是用来快速...

thinkerfans
2013/06/21
0
0
XML生成和解析

1、DOM方式解析XML 给予DOM的解析方式,是把整个XML文档加载到内存,转化成DOM树,可以随机的访问DOM树的任何数据,速度快、比较灵活,但是消耗资源比较多,不适用大的xml文档解析,测试超过...

祁猛
2016/10/19
24
0
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的 官方W3C标准。DOM是以层次结构组织...

_xiaotudou
2014/03/28
221
0
java解析xml文件四种方式介绍、性能比较和基本使用方法

一、基本介绍: 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特...

Candy_Desire
2014/08/20
0
0
java解析xml的四种方法汇总

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SA...

LYQ1990
2017/10/26
0
0
【XML系列】详解JDOM解析XML

【XML系列】详解JDOM解析XML 一、前言 JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。...

磊神Ray
2011/11/01
0
0
使用JDOM解析XML

一、前言 JDOM是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。 DOM适合于当今流行的各种语言...

关河
2016/02/04
19
0
Java解析XML的四种方法

XML文件解析方法 XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假...

wersdffg
2015/07/23
4.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

17.TCP:传输控制协议

介绍 TCP和UDP使用同一网络层(IP),但TCP提供了面向连接、可靠的传输层服务 TCP传输给IP层的信息单位称为报文段或段 TCP通过如下方式保证可靠性: 应用数据被分割成TCP认为最合适发送的数据...

loda0128
9分钟前
0
0
重装Oracle时出现environment variable "PATH"错误的解决办法

在win7 64位下重新安装oracle 11g,一直报environment variable "PATH"的错误,按说明将path里多余的路径删除,但没办法解决。选择忽略错误继续安装,装一半会报CRC错误,还是安装失败。最好...

良言
15分钟前
0
0
TensorFlow 全连接的mnist

全连接的mnist import tensorflow as tf# 导入 MINST 数据集from tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets("MNIST_data/", one_ho......

阿豪boy
15分钟前
0
0
JAVA 三种WebService 规范

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。 1. Jaxws(掌握) JAX-WS 的全称为 Java API for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务...

onedotdot
34分钟前
0
0
将博客搬至CSDN

将博客搬至CSDN

xpbob
35分钟前
1
0
Aidl进程间通信详细介绍

目录介绍 1.问题答疑 2.Aidl相关属性介绍 2.1 AIDL所支持的数据类型 2.2 服务端和客户端 2.3 AIDL的基本概念 3.实际开发中案例操作 3.1 aidl通信业务需求 3.2 操作步骤伪代码 3.3 服务端操作...

潇湘剑雨
53分钟前
0
0
python爬虫日志(3)下载图片

import urlliburl='https://xxx.jpg'#图片地址res=urllib.request.urlopen(url)#此函数用于对url的访问data=res.read() #字节流with open(r'D:\1.jpg',"wb") as code: c...

茫羽行
今天
0
0
vue中$emit的用法

1、父组件可以使用 props 把数据传给子组件。 2、子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( event, fn );//监听event事件后运...

JamesView
今天
0
0
bash审计系统搭建

step1:使用saltstack工具bash部署>>>>>> # salt -N clienta state.sls audit step2:安装elasticsearch>>>>>> 注意: 1.不能以root用户进行启动,需要创建用户,并对解压的elasticsearch目录赋......

硅谷课堂
今天
0
0
Linux sar性能分析

Linux使用sar进行性能分析 sar简介 sar命令常用格式 sar常用性能数据分析 整体CPU使用统计-u 各个CPU使用统计-P 内存使用情况统计-r 整体IO情况-b 各个IO设备情况-d 网络统计-n sar日志保存-...

易野
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部