1.导入pom
<!--xml-->
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
简单demo:
/**
* 生成xml格式的字符串 测试
*
* @return
*/
public static String createXmlString2() {
//创建document对象
org.dom4j.Document document = DocumentHelper.createDocument();
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
//设置编码
document.setXMLEncoding("UTF-8");
//创建根节点
Element requestData = document.addElement("table");
for (int i = 0; i < list.size(); i++) {
Element r1 = requestData.addElement("r");
Element classifyNameRow = r1.addElement("i");
//在根节点加入子节点
Element categoriename = classifyNameRow.addAttribute("n", "categoriename");//分类
//添加内容
categoriename.setText(String.valueOf(i));
}
//将document对象转换成字符串
String xml = document.asXML();
System.out.println("XML字符 " + xml);
return xml;
}
简单限制:
private static boolean lock = true;
public void pushHengRuiSPU() throws InterruptedException {
if (lock) {
lock = false;
hengRuiService.batchHengRuiProInfo();
lock = true;
}
}
单个对象处理XMl:
/**
* 生成xml格式的字符串 单个对象处理
*
* @return
*/
public static String createXmlString(ProductHengRuiInfo productHengRuiInfo) {
//创建document对象
org.dom4j.Document document = DocumentHelper.createDocument();
//设置编码
document.setXMLEncoding("UTF-8");
//创建根节点
Element requestData = document.addElement("table");
Element r = requestData.addElement("r");
Element classifyNameRow = r.addElement("i");
Element productNameRow = r.addElement("i");
Element aliasRow = r.addElement("i");
Element casRow = r.addElement("i");
Element catalogNoRow = r.addElement("i");
Element brandRow = r.addElement("i");
Element sizeRow = r.addElement("i");
Element priceRow = r.addElement("i");
Element qtyRow = r.addElement("i");
Element currencyRow = r.addElement("i");
Element statusRow = r.addElement("i");
Element structureRow = r.addElement("i");
//在根节点加入子节点
Element categoriename = classifyNameRow.addAttribute("n", "categoriename");//分类
//添加内容
categoriename.setText(Objects.requireNonNullElse(productHengRuiInfo.getCategoriename(), ""));
//在根节点加入子节点
Element productname = productNameRow.addAttribute("n", "productname");//中文名
//添加内容
productname.setText(Objects.requireNonNullElse(productHengRuiInfo.getName(), ""));
//在根节点加入子节点
Element alias = aliasRow.addAttribute("n", "alias");//别名
//添加内容
alias.setText(Objects.requireNonNullElse(productHengRuiInfo.getNameAlias(), ""));
//在根节点加入子节点
Element cas = casRow.addAttribute("n", "cas");//cas号
//添加内容
cas.setText(Objects.requireNonNullElse(productHengRuiInfo.getCasNo(), ""));
//在根节点加入子节点
Element catalogno = catalogNoRow.addAttribute("n", "catalogno");//产品号
//添加内容
catalogno.setText(Objects.requireNonNullElse(productHengRuiInfo.getProductNum(), ""));
//在根节点加入子节点
Element brand = brandRow.addAttribute("n", "brand");//品牌
//添加内容
brand.setText("MCE");
//在根节点加入子节点
Element size = sizeRow.addAttribute("n", "size");//规格
//添加内容
size.setText(Objects.requireNonNullElse(productHengRuiInfo.getSpecification(), ""));
//在根节点加入子节点
Element price = priceRow.addAttribute("n", "price");//价格
//添加内容
price.setText(String.valueOf(Objects.requireNonNullElse(productHengRuiInfo.getPrice(), "")));
//在根节点加入子节点
Element qty = currencyRow.addAttribute("n", "qty");//包装库存量
//添加内容
qty.setText(String.valueOf(Objects.requireNonNullElse(productHengRuiInfo.getSku(), "")));
//在根节点加入子节点
Element currency = qtyRow.addAttribute("n", "currency");//货币
//添加内容
currency.setText("RMB");
//在根节点加入子节点
Element status = statusRow.addAttribute("n", "status");//上下架状态
//添加内容
status.setText(Objects.requireNonNullElse(productHengRuiInfo.getStatus(), ""));
//在根节点加入子节点
Element structure = structureRow.addAttribute("n", "structure");//上下架状态
//添加内容
structure.setText(Objects.requireNonNullElse(productHengRuiInfo.getSmiles(), ""));
//将document对象转换成字符串
String xml = document.asXML();
return xml;
}
生成示例:
<?xml version="1.0" encoding="UTF-8"?>
<table>
<r>
<i n="categoriename">XXXX</i>
<i n="productname">XXXX</i>
<i n="alias">XXXX</i>
<i n="cas">XXXX</i>
<i n="catalogno">XXXX</i>
<i n="brand">XXXX</i>
<i n="size">XXXX</i>
<i n="price">XXXX</i>
<i n="currency">XXXX</i>
<i n="qty">XXXX</i>
<i n="status">XXXX</i>
<i n="structure">XXXX</i>
</r>
</table>
集合对象处理:
/**
* 生成xml格式的字符串 集合处理
*
* @return
*/
public static String createXmlStringList(List<ProductHengRuiInfo> productHengRuiInfo) {
//创建document对象
org.dom4j.Document document = DocumentHelper.createDocument();
//设置编码
document.setXMLEncoding("UTF-8");
//创建根节点
Element requestData = document.addElement("table");
productHengRuiInfo.forEach(q -> {
Element r = requestData.addElement("r");
Element classifyNameRow = r.addElement("i");
Element productNameRow = r.addElement("i");
Element aliasRow = r.addElement("i");
Element casRow = r.addElement("i");
Element catalogNoRow = r.addElement("i");
Element brandRow = r.addElement("i");
Element sizeRow = r.addElement("i");
Element priceRow = r.addElement("i");
Element qtyRow = r.addElement("i");
Element currencyRow = r.addElement("i");
Element statusRow = r.addElement("i");
Element structureRow = r.addElement("i");
//在根节点加入子节点
Element categoriename = classifyNameRow.addAttribute("n", "categoriename");//分类
//添加内容
categoriename.setText(Objects.requireNonNullElse(q.getCategoriename(), ""));
//在根节点加入子节点
Element productname = productNameRow.addAttribute("n", "productname");//中文名
//添加内容
productname.setText(Objects.requireNonNullElse(q.getName(), ""));
//在根节点加入子节点
Element alias = aliasRow.addAttribute("n", "alias");//别名
//添加内容
alias.setText(Objects.requireNonNullElse(q.getNameAlias(), ""));
//在根节点加入子节点
Element cas = casRow.addAttribute("n", "cas");//cas号
//添加内容
cas.setText(Objects.requireNonNullElse(q.getCasNo(), ""));
//在根节点加入子节点
Element catalogno = catalogNoRow.addAttribute("n", "catalogno");//产品号
//添加内容
catalogno.setText(Objects.requireNonNullElse(q.getProductNum(), ""));
//在根节点加入子节点
Element brand = brandRow.addAttribute("n", "brand");//品牌
//添加内容
brand.setText("MCE");
//在根节点加入子节点
Element size = sizeRow.addAttribute("n", "size");//规格
//添加内容
size.setText(Objects.requireNonNullElse(q.getSpecification(), ""));
//在根节点加入子节点
Element price = priceRow.addAttribute("n", "price");//价格
//添加内容
price.setText(String.valueOf(Objects.requireNonNullElse(q.getPrice(), "")));
//在根节点加入子节点
Element qty = currencyRow.addAttribute("n", "qty");//包装库存量
//添加内容
qty.setText(String.valueOf(Objects.requireNonNullElse(q.getSku(), "")));
//在根节点加入子节点
Element currency = qtyRow.addAttribute("n", "currency");//货币
//添加内容
currency.setText("RMB");
//在根节点加入子节点
Element status = statusRow.addAttribute("n", "status");//上下架状态
//添加内容
status.setText(Objects.requireNonNullElse(q.getStatus(), ""));
//在根节点加入子节点
Element structure = structureRow.addAttribute("n", "structure");//上下架状态
//添加内容
structure.setText(Objects.requireNonNullElse(q.getSmiles(), ""));
});
//将document对象转换成字符串
String xml = document.asXML();
return xml;
}
生成示例:
<?xml version="1.0" encoding="UTF-8"?>
<table>
<r>
<i n="categoriename">XXXX</i>
<i n="productname">XXXX</i>
<i n="alias">XXXX</i>
<i n="cas">XXXX</i>
<i n="catalogno">XXXX</i>
<i n="brand">XXXX</i>
<i n="size">XXXX</i>
<i n="price">XXXX</i>
<i n="currency">XXXX</i>
<i n="qty">XXXX</i>
<i n="status">XXXX</i>
<i n="structure">XXXX</i>
</r>
<r>
<i n="categoriename">XXXX</i>
<i n="productname">XXXX</i>
<i n="alias">XXXX</i>
<i n="cas">XXXX</i>
<i n="catalogno">XXXX</i>
<i n="brand">XXXX</i>
<i n="size">XXXX</i>
<i n="price">XXXX</i>
<i n="currency">XXXX</i>
<i n="qty">XXXX</i>
<i n="status">XXXX</i>
<i n="structure">XXXX</i>
</r>
</table>