`

java生成xml全操作

 
阅读更多

import java.io.ByteArrayInputStream;

import java.io.File;

import java.io.FileOutputStream;

import java.io.FilenameFilter;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

 

 

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

 

import com.mongodb.BasicDBObject;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.DBObject;

import com.newegg.lab.webdatacenter.VO.SitedataVO;

import com.newegg.lab.webdatacenter.VO.WebsiteVO;

import com.newegg.lab.webdatacenter.dbconfig.Constant;

import com.newegg.lab.webdatacenter.dbconfig.CrawlerMongoDBManager;

import com.newegg.lab.webdatacenter.util.XmlBuilder;

 

public class createXML implements FilenameFilter {

 

private String filename;

 

private String extension;

 

private SitedataVO data;

 

public List<String> xmlfilenamelist = new ArrayList<String>();

/**

* DatafeedXML生成时其他程序禁止对sellerproduct表进行插入修改等操作

*/

public static boolean DatafeedCreatemk = false;

/**

* DatafeedXML数据被读取时则取消DatafeedXML生成等任务执行

*/

public static boolean DatafeedExecutemk = false;

/**

* DatafeedXML首次生成标志(首次采用全表索引的方式)

*/

public static boolean DatafeedFirstmk = true;

 

public createXML() {

}

 

public createXML(String filename, String extension) {

this.filename = filename;

this.extension = extension;

}

 

public SitedataVO getData() {

return data;

}

 

public void setData(SitedataVO data) {

this.data = data;

}

 

/**

* 生成某个站点的XML文件

*/

public void execute() {

boolean newDocumentmk = true;

// 获得mongodb数据源

DBCollection collection = CrawlerMongoDBManager

.getCollection("mongodb_datacenter_productlist");

DBCursor cursor = collection.find().limit(100);

XmlBuilder outXml = new XmlBuilder();

while (cursor.hasNext()) {

if (newDocumentmk) {

outXml.appendRowText(new String[] { "isfullindex" },

new String[] { "0" });

newDocumentmk = false;

}

// System.out.println(Util.getDate()+"---->"+cursor.next().get("productName"));

DBObject dbObject = cursor.next();

 

String[] colName = { "active", "shopname", "catalogname", "brand",

"website", "itemid", "producturl", "productname", "model",

"unitprice", "listprice", "rebate", "shipping",

"shippingtime", "inventory", "inventorydetail", "infotime",

"status", "imagepath", "imageurl", "imageexist",

"isdeleted" };

 

String active = "";

if (dbObject.get("active") != null) {

active = (String) dbObject.get("active");

}

String shopname = "";// 商家名称

if (dbObject.get("shopname") != null) {

shopname = dbObject.get("shopname").toString();

}

String catalogname = "";// 商品分类名称

if (dbObject.get("catalogname") != null) {

catalogname = dbObject.get("catalogname").toString();

}

String brand = "";

if (dbObject.get("brand") != null) {

brand = (String) dbObject.get("brand");

}

String website = (String) dbObject.get("websiteId");

if (dbObject.get("websiteId") != null) {

website = (String) dbObject.get("websiteId");

}

String itemSKU = (String) dbObject.get("itemSku");

if (dbObject.get("itemSku") != null) {

itemSKU = (String) dbObject.get("itemSku");

}

String productUrl = (String) dbObject.get("productUrl");

if (dbObject.get("productUrl") != null) {

productUrl = (String) dbObject.get("productUrl");

}

String productname = (String) dbObject.get("productName");

if (dbObject.get("productName") != null) {

productname = (String) dbObject.get("productName");

}

String model = (String) dbObject.get("model");

if (dbObject.get("model") != null) {

model = (String) dbObject.get("model");

}

String unitprice = (String) dbObject.get("unitPrice");

if (dbObject.get("unitPrice") != null) {

unitprice = (String) dbObject.get("unitPrice");

}

String listprice = (String) dbObject.get("listPrice");

if (dbObject.get("listPrice") != null) {

listprice = (String) dbObject.get("listPrice");

}

String rebate = (String) dbObject.get("rebate");

String shipping = (String) dbObject.get("shipping");

String shippingtime = (String) dbObject.get("shippingTime");

String inventory = (String) dbObject.get("inventory");

String inventorydetail = (String) dbObject.get("inventoryDetail");

String infotime = (String) dbObject.get("infoTime");

String status = (String) dbObject.get("status");

String imagepath = (String) dbObject.get("imagePath");

String imageUrl = (String) dbObject.get("imageUrl");

String imageexist = "0";

String isdeleted = "0";

 

String[] colData = { active, shopname, catalogname,

"<![CDATA[" + brand + "]]>", website, itemSKU,

"<![CDATA[" + productUrl + "]]>",

"<![CDATA[" + productname + "]]>",

"<![CDATA[" + model + "]]>", unitprice, listprice, rebate,

shipping, shippingtime, inventory, inventorydetail,

infotime, status, imagepath, imageUrl, imageexist,

isdeleted };

 

outXml.appendRowText(colName, colData);

}

 

String websitename = "360361";

String xmldir = "d:/test/";

int xmlindex = Getfilestartnum(websitename, new File(xmldir));

SaveXml(outXml.getContext("product"), xmlindex, websitename, xmldir);

 

System.out.println("xml end!!!!!!!!!!!!!");

}

 

/**

* datafeed数据生成

*/

public void CreateDatafeedXml() {

xmlfilenamelist.clear();

if (DatafeedExecutemk)

return;

String xmldirpath = Constant.DATAFEED_XML_DIR;

File fdis = new File(xmldirpath);

if (!fdis.exists())

fdis.mkdirs();

if (DatafeedFirstmk) {

// 全文索引则先初始化XML文件

InitXml(fdis);

}

if (!CanExecute(fdis))

return;

List<WebsiteVO> sellerlist = new ArrayList<WebsiteVO>();

// 获得mongodb数据源

DBCollection collection = CrawlerMongoDBManager

.getCollection(Constant.DB_CONN_WEBSITE);

 

BasicDBObject contion = new BasicDBObject();

contion.put("siteName", "www.newegg.com.cn");

DBCursor cursor = collection.find(contion);

 

while (cursor.hasNext()) {

DBObject dbObject = cursor.next();

String siteid = "";

if (dbObject.get("_id") != null)

siteid = dbObject.get("_id").toString();

String sitename = "";

if (dbObject.get("siteName") != null)

sitename = (String) dbObject.get("siteName");

sellerlist.add(new WebsiteVO(siteid, sitename));

}

for (WebsiteVO seller : sellerlist) {

String websitename = seller.getSitename();

String condition = "";

if (DatafeedFirstmk) {

condition = seller.getSiteid();

CreateProductXmlFile(condition, 0, websitename, fdis);

} else {

// condition =

// " AND sep.SellerID = "+seller.getSellerId()+" AND sep.State = 1";

// CreateProductXmlFile(condition,1,websitename,fdis);

}

}

// sellerService.UpdateSellerProductState();

// 更新datafeed indexXML文件

UpdateIndexXml(fdis);

DatafeedFirstmk = false;

sellerlist.clear();

}

 

/**

* 生成完datadeed产生xml后,修改indexxml文件配置

* @param fdis

*/

private void UpdateIndexXml(File fdis) {

try {

String path = fdis.getAbsolutePath() + File.separatorChar

+ "datafeed_index.xml";

SAXReader saxReader = new SAXReader(false);

Document document = saxReader.read(path);

 

Element Root = document.getRootElement();

for (String filename : xmlfilenamelist) {

Element Fileindex = Root.addElement("fileindex");

Element Filetype = Fileindex.addElement("filetype");

Filetype.addCDATA("1");

Element Filename = Fileindex.addElement("filename");

Filename.addCDATA(filename);

Element Fileurl = Fileindex.addElement("fileurl");

Fileurl.addCDATA("d:/test2/datafeed_" + filename + ".xml");

}

// Writer fileWriter=new FileWriter(path);

XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(path));

xmlWriter.write(document);

xmlWriter.close();

} catch (Exception e) {

e.printStackTrace();

}

}

 

/**

* 根据条件获得站点数据

* @return

*/

@SuppressWarnings("unchecked")

private List<SitedataVO> getAllDataFromWebsite(String condition) {

List<SitedataVO> spList = new ArrayList<SitedataVO>();

// 获得mongodb数据源

DBCollection collection = CrawlerMongoDBManager

.getCollection(Constant.DB_DATACENTER_PRODUCTLIST);

BasicDBObject contion = new BasicDBObject();

contion.put("websiteId", condition);

contion.put("commentInfo", new BasicDBObject("$ne", null));

 

DBCursor cursor = collection.find(contion).limit(10);

while (cursor.hasNext()) {

DBObject dbObject = cursor.next();

 

String active = "";

if (dbObject.get("active") != null) {

active = (String) dbObject.get("active");

}

String shopname = "";// 商家名称

if (dbObject.get("shopname") != null) {

shopname = dbObject.get("shopname").toString();

}

String catalogname = "";// 商品分类名称

if (dbObject.get("catalogname") != null) {

catalogname = dbObject.get("catalogname").toString();

}

String brand = "";

if (dbObject.get("brand") != null) {

brand = (String) dbObject.get("brand");

}

String website = (String) dbObject.get("websiteId");

if (dbObject.get("websiteId") != null) {

website = (String) dbObject.get("websiteId");

}

String itemSKU = (String) dbObject.get("itemSku");

if (dbObject.get("itemSku") != null) {

itemSKU = (String) dbObject.get("itemSku");

}

String productUrl = (String) dbObject.get("productUrl");

if (dbObject.get("productUrl") != null) {

productUrl = (String) dbObject.get("productUrl");

}

String productname = (String) dbObject.get("productName");

if (dbObject.get("productName") != null) {

productname = (String) dbObject.get("productName");

}

String model = (String) dbObject.get("model");

if (dbObject.get("model") != null) {

model = (String) dbObject.get("model");

}

String unitprice = (String) dbObject.get("unitPrice");

if (dbObject.get("unitPrice") != null) {

unitprice = (String) dbObject.get("unitPrice");

}

String listprice = (String) dbObject.get("listPrice");

if (dbObject.get("listPrice") != null) {

listprice = (String) dbObject.get("listPrice");

}

String rebate = (String) dbObject.get("rebate");

String shipping = (String) dbObject.get("shipping");

String shippingtime = (String) dbObject.get("shippingTime");

String inventory = (String) dbObject.get("inventory");

String inventorydetail = (String) dbObject.get("inventoryDetail");

 

String createTime = (String) dbObject.get("createTime");

 

String status = (String) dbObject.get("status");

String imagepath = (String) dbObject.get("imagePath");

String imageUrl = (String) dbObject.get("imageUrl");

String imageexist = "0";

String isdeleted = "0";

String commenttotal = "";

if (dbObject.get("commenttotal") != null)

commenttotal = (String) dbObject.get("commenttotal");

String commenturl = "";

if (dbObject.get("commenturl") != null)

commenturl = (String) dbObject.get("commenturl");

String commentactive = "";

if (dbObject.get("commentactive") != null)

commentactive = (String) dbObject.get("commentactive");

 

String introduce = "";

if (dbObject.get("introduce") != null)

introduce = (String) dbObject.get("introduce");

String englishbrand = "";

if (dbObject.get("englishbrand") != null)

englishbrand = (String) dbObject.get("englishbrand");

String brandlogo = "";

if (dbObject.get("brandlogo") != null)

brandlogo = (String) dbObject.get("brandlogo");

String brandDesc = "";

if (dbObject.get("brandDesc") != null)

brandDesc = (String) dbObject.get("brandDesc");

String manufacture = "";

if (dbObject.get("manufacture") != null)

manufacture = (String) dbObject.get("manufacture");

String manufactureurl = "";

if (dbObject.get("manufactureurl") != null)

manufactureurl = (String) dbObject.get("manufactureurl");

 

DBObject commentinfo = (DBObject) dbObject.get("commentInfo");

 

List<DBObject> propertyinfo = (List<DBObject>) dbObject

.get("propertyInfo");

if (propertyinfo != null && propertyinfo.size() > 0) {

propertyinfo = (List<DBObject>) dbObject.get("propertyInfo");

} else {

propertyinfo = null;

}

 

spList.add(new SitedataVO(itemSKU, productname, productUrl,

shopname, brand, model, unitprice, listprice, rebate,

shipping, shippingtime, inventory, inventorydetail, active,

status, website, catalogname, imagepath, imageUrl,

imageexist, createTime, commenttotal, commenturl,

commentactive, commentinfo, propertyinfo, introduce,

isdeleted, englishbrand, brandlogo, brandDesc, manufacture,

manufactureurl));

}

return spList;

}

 

/**

* 生成某个站点的XML文件

* @param condition

* @param isfullindex

* @param websitename

* @param xmldir

*/

@SuppressWarnings( { "unchecked", "deprecation" })

private void CreateProductXmlFile(String condition, int isfullindex,

String websitename, File xmldir) {

try {

List<SitedataVO> spList = getAllDataFromWebsite(condition);

 

System.out.println("website:" + websitename + "  itemscount:"

+ spList.size());

int xmlindex = Getfilestartnum(websitename, xmldir);

boolean newDocumentmk = true;

Document document = null;

Element Root = null;

int XmlLen = 39;

for (int i = 0; i < spList.size(); i++) {

SitedataVO sellerProduct = spList.get(i);

if (newDocumentmk) {

document = DocumentHelper.createDocument();

Root = document.addElement("Root");

XmlLen += 13;

Element Fullindex = Root.addElement("isfullindex");

Fullindex.addCDATA(isfullindex + "");

XmlLen += 28;

newDocumentmk = false;

}

Element Product = Root.addElement("product");

XmlLen += 19;

Element Shopname = Product.addElement("shopname");

XmlLen += 21;

Shopname.addCDATA(sellerProduct.getShopname().trim());

XmlLen += sellerProduct.getShopname().getBytes().length;

Element Catalogname = Product.addElement("catalogname");

XmlLen += 27;

Catalogname.addCDATA(sellerProduct.getCatalogname().trim());

XmlLen += sellerProduct.getCatalogname().getBytes().length;

Element Brand = Product.addElement("brand");

XmlLen += 15;

Brand.addCDATA(sellerProduct.getBrand().trim());

XmlLen += sellerProduct.getBrand().getBytes().length;

Element Website = Product.addElement("website");

XmlLen += 19;

Website.addCDATA(sellerProduct.getWebsite().trim());

XmlLen += sellerProduct.getWebsite().getBytes().length;

Element Itemid = Product.addElement("itemid");

// Itemid.addCDATA(String.valueOf(sellerProduct.getProducturl().trim().hashCode()));

// XmlLen += 17;

Itemid.addCDATA(sellerProduct.getItemSKU().trim());

XmlLen += sellerProduct.getItemSKU().getBytes().length;

Element Producturl = Product.addElement("producturl");

XmlLen += 25;

Producturl.addCDATA(sellerProduct.getProducturl().trim());

XmlLen += sellerProduct.getProducturl().getBytes().length;

Element Productname = Product.addElement("productname");

XmlLen += 27;

Productname.addCDATA(sellerProduct.getProductname().trim());

XmlLen += sellerProduct.getProductname().getBytes().length;

Element Model = Product.addElement("model");

XmlLen += 15;

Model.addCDATA(sellerProduct.getModel().trim());

XmlLen += sellerProduct.getModel() != null ? sellerProduct

.getModel().getBytes().length : 23;

Element Unitprice = Product.addElement("unitprice");

XmlLen += 23;

Unitprice.addCDATA(sellerProduct.getUnitprice().toString());

XmlLen += sellerProduct.getUnitprice().toString().getBytes().length;

/*

* if (isfullindex == 2 && sellerProduct.getListprice().size()

* == 2){ //更新数据时则需要填写最近价格变动情况 Element Listprice =

* Product.addElement("listprice"); XmlLen += 23;

* Listprice.addCDATA

* (sellerProduct.getListprice().get(1).getPrice().toString());

* XmlLen +=

* sellerProduct.getListprice().get(1).getPrice().toString

* ().getBytes().length; Element Rebate =

* Product.addElement("rebate"); XmlLen += 17; Double re =

* sellerProduct

* .getPriceList().get(0).getPrice()-sellerProduct.getPriceList

* ().get(1).getPrice(); Rebate.addCDATA(re.toString()); XmlLen

* += re.toString().getBytes().length; } else{ Element Listprice

* = Product.addElement("listprice"); XmlLen += 23; Element

* Rebate = Product.addElement("rebate"); XmlLen += 17; }

*/

Element Shipping = Product.addElement("shipping");

XmlLen += 21;

Shipping.addCDATA(sellerProduct.getShipping());

XmlLen += sellerProduct.getShipping() != null ? sellerProduct

.getShipping().getBytes().length : 25;

Element Shippingtime = Product.addElement("shippingtime");

XmlLen += 29;

Shippingtime.addCDATA(sellerProduct.getShippingtime());

XmlLen += sellerProduct.getShippingtime() != null ? sellerProduct

.getShippingtime().getBytes().length

: 25;

Element Inventory = Product.addElement("inventory");

XmlLen += 24;

Inventory.addCDATA(sellerProduct.getInventory());

XmlLen += sellerProduct.getInventory() != null ? sellerProduct

.getInventory().getBytes().length : 25;

Element Inventorydetail = Product.addElement("inventorydetail");

XmlLen += 35;

Inventorydetail.addCDATA(sellerProduct.getInventorydetail());

XmlLen += sellerProduct.getInventorydetail() != null ? sellerProduct

.getInventorydetail().getBytes().length

: 25;

Element createtime = Product.addElement("createtime");

XmlLen += 21;

createtime.addCDATA((sellerProduct.getCreatetime()));

XmlLen += sellerProduct.getCreatetime().getBytes().length;

/*

* if (isfullindex == 2){ if

* (sellerProduct.getActive().intValue() == 1){ Element Deleted

* = Product.addElement("isdeleted"); Deleted.addCDATA("0"); }

* else{ Element Deleted = Product.addElement("isdeleted");

* Deleted.addCDATA("1"); } } else{ Element Deleted =

* Product.addElement("isdeleted"); Deleted.addCDATA("0"); }

*/

XmlLen += 24;

Element Imagepath = Product.addElement("imagepath");

XmlLen += 23;

Imagepath.addCDATA(sellerProduct.getImagepath());

XmlLen += sellerProduct.getImagepath() != null ? sellerProduct

.getImagepath().getBytes().length : 25;

Element Imageurl = Product.addElement("imageurl");

XmlLen += 21;

Imageurl

.addCDATA(sellerProduct.getImageurl() != null ? sellerProduct

.getImageurl()

: "");

XmlLen += (sellerProduct.getImageurl() != null ? sellerProduct

.getImageurl() : "").getBytes().length;

Element Imageexist = Product.addElement("imageexist");

XmlLen += 26;

Imageexist

.addCDATA(sellerProduct.getImageexist() != null ? sellerProduct

.getImageexist()

: "");

XmlLen += (sellerProduct.getImageexist() != null ? sellerProduct

.getImageexist()

: "").getBytes().length;

Element Propertyinfo = Product.addElement("propertyinfo");

XmlLen += 29;

if (sellerProduct.getPropertyinfo() != null) {

Element Propertygroup = null;

Element Property = null;

for (int j = 0; j < sellerProduct.getPropertyinfo().size(); j++) {

BasicDBObject property = (BasicDBObject) sellerProduct

.getPropertyinfo().get(j);

Propertygroup = Propertyinfo

.addElement("propertygroup");

XmlLen += 31;

String propertyGroupName = property.get(

"propertyGroupName").toString();

Propertygroup.setAttributeValue("name",

propertyGroupName);

XmlLen += propertyGroupName.getBytes().length;

List<DBObject> propertyvalueList = (List<DBObject>) property

.get("propertyGroupValue");

for (DBObject dbObject2 : propertyvalueList) {

Property = Propertygroup.addElement("property");

XmlLen += 21;

String propertyName = dbObject2.get("propertyName") != null ? dbObject2

.get("propertyName").toString()

: "";

String propertyValue = dbObject2

.get("propertyValue") != null ? dbObject2

.get("propertyValue").toString() : "";

Property.setAttributeValue("name", propertyName);

XmlLen += propertyName.getBytes().length;

Property.addCDATA(propertyValue);

XmlLen += propertyValue.getBytes().length;

}

}

}

 

Element Commentactive = Product.addElement("commentactive");

XmlLen += 31;

Commentactive

.addCDATA(sellerProduct.getCommentactive() != null ? sellerProduct

.getCommentactive()

: "");

XmlLen += (sellerProduct.getCommentactive() != null ? sellerProduct

.getCommentactive()

: "").getBytes().length;

Element Commenttotal = Product.addElement("commenttotal");

Commenttotal.addCDATA("0");

XmlLen += 30;

Element commentInfo = Product.addElement("commentinfo");

XmlLen += 29;

if (sellerProduct.getCommentinfo() != null) {

Element Comments = null;

DBObject commentinfo = sellerProduct.getCommentinfo();

Comments = commentInfo.addElement("goodcomments");

XmlLen += 31;

DBObject Commentsinfo = (DBObject) commentinfo

.get("GoodComments");

XmlLen=parseCommentContent(Comments, Commentsinfo, XmlLen);

 

Comments = commentInfo.addElement("generalcomments");

XmlLen += 31;

Commentsinfo = (DBObject) commentinfo

.get("GeneralComments");

XmlLen=parseCommentContent(Comments, Commentsinfo, XmlLen);

Comments = commentInfo.addElement("poolcomments");

XmlLen += 31;

Commentsinfo = (DBObject) commentinfo

.get("PoorComments");

XmlLen = parseCommentContent(Comments, Commentsinfo, XmlLen);

}

 

Element Introduce = Product.addElement("introduce");

XmlLen += 23;

Introduce.addCDATA(sellerProduct.getIntroduce().trim());

XmlLen += sellerProduct.getIntroduce().trim().getBytes().length;

Element EnglishBrand = Product.addElement("englishBrand");

XmlLen += 29;

EnglishBrand.addCDATA(sellerProduct.getEnglishbrand().trim());

XmlLen += sellerProduct.getEnglishbrand().getBytes().length;

Element BrandLogo = Product.addElement("brandLogo");

XmlLen += 23;

BrandLogo.addCDATA(sellerProduct.getBrandlogo().trim());

XmlLen += (sellerProduct.getBrandlogo()).getBytes().length;

Element BrandDesc = Product.addElement("BrandDesc");

XmlLen += 23;

BrandDesc.addCDATA(sellerProduct.getBrandDesc().trim());

XmlLen += sellerProduct.getBrandDesc().trim().getBytes().length;

Element Manufacture = Product.addElement("manufacture");

XmlLen += 27;

Manufacture.addCDATA(sellerProduct.getManufacture().trim());

XmlLen += (sellerProduct.getManufacture()).getBytes().length;

Element Manufactureurl = Product.addElement("manufactureurl");

XmlLen += 33;

Manufactureurl.addCDATA(sellerProduct.getManufactureurl()

.trim());

XmlLen += (sellerProduct.getManufactureurl()).getBytes().length;

if (i == spList.size() - 1) {

 

SaveXml(document, xmlindex, websitename, xmldir

.getAbsolutePath());

return;

}

if (i != 0 && i % 1000 == 0) {

if (Islimit(document)) {

SaveXml(document, xmlindex, websitename, xmldir

.getAbsolutePath());

xmlindex++;

newDocumentmk = true;

}

}

if (XmlLen * 2 >= 20 * 1024 * 1024) {

SaveXml(document, xmlindex, websitename, xmldir

.getAbsolutePath());

xmlindex++;

newDocumentmk = true;

XmlLen = 39;

}

}

} catch (DocumentException e) {

e.printStackTrace();

}

}

@SuppressWarnings("unchecked")

private int parseCommentContent(Element GoodComments,DBObject goodCommentsinfo,int XmlLen){

if (goodCommentsinfo != null) {

Element commentcount = GoodComments.addElement("commentcount");

XmlLen += 31;

String commentnum = goodCommentsinfo

.get("commentcount") != null ? goodCommentsinfo

.get("commentcount").toString() : "";

commentcount.addCDATA(commentnum);

Element actualcommentcount = GoodComments

.addElement("actualcommentcount");

XmlLen += 31;

String actualcommentnum = goodCommentsinfo

.get("actualcommentcount") != null ? goodCommentsinfo

.get("actualcommentcount").toString()

: "";

actualcommentcount.addCDATA(actualcommentnum);

List<DBObject> commentList = (List<DBObject>) goodCommentsinfo

.get("comment");

if (commentList != null) {

for (DBObject commentcontent : commentList) {

Element comment = GoodComments.addElement("comment");

XmlLen += 31;

Element publisher = comment.addElement("publisher");

XmlLen += 31;

publisher

.addCDATA((String) (commentcontent

.get("publisher") != null ? commentcontent

.get("publisher")

: ""));

XmlLen += (commentcontent.get("publisher") != null ? commentcontent

.get("publisher").toString().getBytes().length

: 31);

Element rank = comment.addElement("rank");

XmlLen += 31;

rank.addCDATA((String) (commentcontent

.get("rank") != null ? commentcontent

.get("rank") : ""));

XmlLen += (commentcontent.get("rank") != null ? commentcontent

.get("rank").toString().getBytes().length

: 31);

Element description = comment.addElement("description");

XmlLen += 31;

description

.addCDATA((String) (commentcontent

.get("description") != null ? commentcontent

.get("description")

: ""));

XmlLen += (commentcontent.get("description") != null ? commentcontent

.get("description").toString()

.getBytes().length

: 31);

Element publishingtime = comment

.addElement("publishingtime");

XmlLen += 31;

publishingtime

.addCDATA((String) (commentcontent

.get("publishingtime") != null ? commentcontent

.get("publishingtime")

: ""));

XmlLen += (commentcontent.get("publishingtime") != null ? commentcontent

.get("publishingtime").toString()

.getBytes().length

: 31);

}

}

}

return XmlLen;

}

 

/**

* 保存当前document为XML文件

* @param document

* @param xmlindex

* @param websitename

* @param dirpath

*/

private  void SaveXml(String text, int xmlindex, String websitename,

String dirpath) {

try {

String filename = "datafeed_" + websitename + "_"

+ String.format("%02d", xmlindex);

xmlfilenamelist.add(filename);

XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(dirpath

+ File.separatorChar + filename + ".xml"));

Document document = new SAXReader().read(new ByteArrayInputStream(

text.getBytes()));

xmlWriter.write(document);

xmlWriter.close();

} catch (IOException e) {

System.out.println(e.getMessage());

} catch (DocumentException e) {

e.printStackTrace();

}

}

 

private  void SaveXml(Document document, int xmlindex,

String websitename, String dirpath) throws DocumentException {

try {

String filename = "datafeed_" + websitename + "_"

+ String.format("%02d", xmlindex);

xmlfilenamelist.add(filename);

XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(dirpath

+ File.separatorChar + filename + ".xml"));

xmlWriter.write(document);

xmlWriter.close();

} catch (IOException e) {

System.out.println(e.getMessage());

}

}

 

/**

* 判断XML是否达到20M容量

* @param document

* @return

*/

private static boolean Islimit(Document document) {

byte[] xmlby = document.asXML().getBytes();

if (xmlby.length >= 20 * 1024 * 1024)

return true;

else

return false;

}

 

/**

* 获取某站点XML文件起始编号

* @param websitename

* @param xmldir

* @return

*/

private static int Getfilestartnum(String websitename, File xmldir) {

File[] filenames = xmldir.listFiles();

int index = 1;

for (File pfile : filenames) {

if (pfile.isFile() && pfile.getName().contains(websitename))

index++;

}

return index;

}

 

/**

* 初始化datafeedXML文件,先删除目录下所有XML文件,然后产生基础的目录文件

* @param xmldir

*/

private void InitXml(File fdis) {

try {

// FileUtils.cleanDirectory(fdis);

deleteFiles(fdis.getAbsolutePath(), "*", "xml");

String path = fdis.getAbsolutePath() + File.separatorChar

+ "datafeed_index.xml";

Document document = DocumentHelper.createDocument();

@SuppressWarnings("unused")

Element Root = document.addElement("Root");

XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(path));

xmlWriter.write(document);

xmlWriter.close();

} catch (IOException e) {

e.printStackTrace();

}

}

 

/**

*  删除指定文件或一些文件

* @param path

* @param inname

* @param inextension

*/

private  void deleteFiles(String path, String inname,

String inextension) {

FileManagerFilter fmf = new FileManagerFilter(inname, inextension);

File file = new File(path);

File[] filelist = file.listFiles(fmf);

if (filelist.length != 0) {

System.out.println("**************删除文件*************");

for (File fl : filelist) {

System.out.println(fl + (fl.delete() ? " 成功" : " 没有成功")

+ "被删除!");

}

} else {

System.out.println("根据您所给的条件,没有找到要删除的文件!");

}

}

 

/**

* 判断本次定时是否可以执行,若上次产生的XML文件尚未处理则本次输出XML任务不执行

* @param xmldir

* @return

*/

private boolean CanExecute(File xmldir) {

File[] filenames = xmldir.listFiles();

if (filenames.length > 1)

return false;

else

return true;

}

 

/**

* @param args

*/

public static void main(String[] args) {

try {

// new createXML().UpdateIndexXml(new File("d:/test2/"));

new createXML().CreateDatafeedXml();

System.out.println("end@@@@@@@@@@@@@@@@@@@@@@@@");

} catch (Exception e) {

e.printStackTrace();

}

 

}

 

@Override

public boolean accept(File dir, String name) {

boolean fileOK = true;

if (name == "*" && extension == "*") {

return fileOK = true;

}

if (name != null) {

if (name != "*") {

fileOK &= filename.startsWith(name);

}

}

if (extension != null) {

fileOK &= filename.endsWith('.' + extension);

}

return fileOK;

}

 

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics