142 lines
5.7 KiB
Java
142 lines
5.7 KiB
Java
package com.tenwa.httpclient.pypafhtml;
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import org.dom4j.Document;
|
|
import org.dom4j.Element;
|
|
import org.dom4j.io.SAXReader;
|
|
import org.dom4j.tree.DefaultAttribute;
|
|
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.PrintStream;
|
|
import java.util.List;
|
|
|
|
|
|
public class PyHtmlCreate {
|
|
|
|
/**
|
|
* xml文件读取并生成html文件
|
|
* @param xmlFilePath
|
|
* @return
|
|
*/
|
|
public static String createHtmlFile(String xmlFilePath, String htmlFilePath) throws Exception {
|
|
SAXReader reader = new SAXReader();
|
|
File xmlFile = new File(xmlFilePath);
|
|
Document document = reader.read(xmlFile);
|
|
Element root = document.getRootElement();
|
|
JSONObject obj = createObjJson(root);
|
|
System.out.println("PyHtmlCreate===========JSON=" + obj.toJSONString());
|
|
String reportId = obj.getString("reportID");
|
|
// TODO: 2020/7/30 文件地址修改
|
|
htmlFilePath = htmlFilePath + "xmlHtml/"+ reportId +".html";
|
|
File htmlFile = new File(htmlFilePath);
|
|
htmlFile.createNewFile();
|
|
String htmlContent = createHtml(obj);
|
|
PrintStream printStream = new PrintStream(new FileOutputStream(htmlFile));
|
|
printStream.println(htmlContent);//将字符串写入文件
|
|
return htmlFilePath;
|
|
}
|
|
|
|
/**
|
|
* xml转换json
|
|
* @param root
|
|
* @return
|
|
*/
|
|
private static JSONObject createObjJson(Element root){
|
|
JSONObject obj = new JSONObject();
|
|
List<DefaultAttribute> rootAttribute = root.attributes();
|
|
for(DefaultAttribute roAttribute : rootAttribute) {
|
|
obj.put(roAttribute.getName(), roAttribute.getStringValue());
|
|
}
|
|
List<Element> cisReports = root.elements();
|
|
String reportID = null;
|
|
|
|
for(Element cisReport : cisReports) {
|
|
List<DefaultAttribute> crAttributes = cisReport.attributes();
|
|
for(DefaultAttribute crAttribute : crAttributes) {
|
|
obj.put(crAttribute.getName(), crAttribute.getStringValue());
|
|
}
|
|
JSONObject queryConditionsObj = new JSONObject();
|
|
obj.put("queryConditionsObj", queryConditionsObj);
|
|
Element queryCondition = cisReport.element("queryConditions");
|
|
List<Element> items = queryCondition.elements("item");
|
|
for(Element item : items) {
|
|
List<Element> subItem = item.elements();
|
|
queryConditionsObj.put(subItem.get(0).getTextTrim(), subItem.get(2).getTextTrim());
|
|
}
|
|
JSONObject personAntiFraudDescInfo = createJson(cisReport, "personAntiFraudDescInfo");
|
|
obj.put("personAntiFraudDescInfo", personAntiFraudDescInfo);
|
|
JSONObject personAntiFraudScoreInfo = createJson(cisReport, "personAntiFraudScoreInfo");
|
|
obj.put("personAntiFraudScoreInfo", personAntiFraudScoreInfo);
|
|
JSONObject personBaseInfo = createJson(cisReport, "personBaseInfo");
|
|
obj.put("personBaseInfo", personBaseInfo);
|
|
JSONObject personRiskRosterInfo = createJson(cisReport, "personRiskRosterInfo");
|
|
obj.put("personRiskRosterInfo", personRiskRosterInfo);
|
|
|
|
JSONObject policeCheckInfo = createJson(cisReport, "policeCheckInfo");
|
|
obj.put("policeCheckInfo", policeCheckInfo);
|
|
|
|
JSONObject mobileCheckInfo = createJson(cisReport, "mobileCheckInfo");
|
|
obj.put("mobileCheckInfo", mobileCheckInfo);
|
|
|
|
JSONObject mobileStatusInfo = createJson(cisReport, "mobileStatusInfo");
|
|
obj.put("mobileStatusInfo", mobileStatusInfo);
|
|
|
|
JSONObject personJudicialRiskInfo = createJson(cisReport, "personJudicialRiskInfo");
|
|
obj.put("personJudicialRiskInfo", personJudicialRiskInfo);
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
/**
|
|
* json 组装
|
|
* @param cisReport
|
|
* @param key
|
|
* @return
|
|
*/
|
|
private static JSONObject createJson(Element cisReport, String key){
|
|
JSONObject obj = new JSONObject();
|
|
Element subElement = cisReport.element(key);
|
|
List<DefaultAttribute> subAttributes = subElement.attributes();
|
|
for(DefaultAttribute sub : subAttributes) {
|
|
obj.put(sub.getName(), sub.getStringValue());
|
|
}
|
|
//返回结果值不为3即尝试解析内容是否有值
|
|
if(!"3".equals(obj.getString("treatResult"))){
|
|
List<Element> grandsonElements = subElement.elements();
|
|
JSONArray item = new JSONArray();
|
|
for(Element element : grandsonElements) {
|
|
if(!"item".equals(element.getName())){
|
|
obj.put(element.getName(), element.getStringValue().trim());
|
|
}else {
|
|
JSONObject itemObj = new JSONObject();
|
|
List<Element> subGrandsonElements = element.elements();
|
|
for(Element e : subGrandsonElements){
|
|
itemObj.put(e.getName(), e.getStringValue().trim());
|
|
}
|
|
item.add(itemObj);
|
|
}
|
|
}
|
|
if(null != item && item.size() > 0){
|
|
obj.put("item", item);
|
|
}
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
/**
|
|
* html组装
|
|
* @param obj
|
|
* @return
|
|
*/
|
|
private static String createHtml(JSONObject obj) throws Exception {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(PyHtmlBase.header);
|
|
sb.append(PyHtmlContent.createBodyHead(obj));
|
|
sb.append(PyHtmlContent.createBodyContent(obj));
|
|
sb.append(PyHtmlBase.tail);
|
|
return sb.toString();
|
|
}
|
|
}
|