文档章节

JDOM生成XML文档(二)

BK灬
 BK灬
发布于 2016/05/06 18:07
字数 984
阅读 61
收藏 4
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

© 著作权归作者所有

共有 人打赏支持
BK灬

BK灬

粉丝 46
博文 343
码字总数 142562
作品 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
【XML系列】详解JDOM解析XML

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

磊神Ray
2011/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
5
0
现场看路演了!

HiBlock
昨天
16
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
9
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
19
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部