Merge branch 'master' into dev

pull/235/head
ruibaby 2019-07-09 15:47:08 +08:00
commit 31f4ec3afe
2 changed files with 108 additions and 3 deletions

View File

@ -26,13 +26,13 @@
### 下载最新的 Halo 安装包
```bash
curl -L https://github.com/halo-dev/halo/releases/download/v1.0.1/halo-1.0.1.jar --output halo-latest.jar
curl -L https://github.com/halo-dev/halo/releases/download/v1.0.2/halo-1.0.2.jar --output halo-latest.jar
```
或者
```bash
wget https://github.com/halo-dev/halo/releases/download/v1.0.1/halo-1.0.1.jar -O halo-latest.jar
wget https://github.com/halo-dev/halo/releases/download/v1.0.2/halo-1.0.2.jar -O halo-latest.jar
```
### 启动 Halo
@ -98,4 +98,4 @@ nohup java -jar halo-latest.jar >/dev/null 2>&1&
![admin-profile.png](https://i.loli.net/2019/05/08/5cd2fccee89f5.png)
![admin-options.png](https://i.loli.net/2019/05/08/5cd2fccedc309.png)
![admin-options.png](https://i.loli.net/2019/05/08/5cd2fccedc309.png)

View File

@ -0,0 +1,105 @@
package run.halo.app.utils;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.io.FileInputStream;
import java.util.*;
/**
* WordPress xml Map
*
* @author guqing
*/
public class XmlTransferMapUtils {
/**
* List
*/
private static final List<String> ARRAY_PROPERTY = Arrays.asList("channel", "item", "category", "postmeta", "comment");
/**
* xml xml rootElement
*
* @param file xml
* @return
*/
public Element getRootElement(File file) {
try {
SAXReader saxReader = new SAXReader();
FileInputStream fileInputStream = new FileInputStream(file);
Document document = saxReader.read(fileInputStream);
return document.getRootElement();
} catch (Exception e) {
throw new RuntimeException("can not get root element");
}
}
/**
* Map
*
* @param root xml
* @return xmlMap
*/
public Map<String, Object> getResultSetMapping(Element root) {
Map<String, Object> result;
try {
// 获取根元素的所有子元素
List<Element> children = root.elements();
//递归遍历将xml节点数据解析为Map结果集
result = transfer2Map(children, null);
} catch (Exception e) {
throw new RuntimeException("can not transfer xml file to map." + e.getMessage());
}
return result;
}
/**
* xmlN
*
* @param elements
* @param list
* @return Map
*/
private Map<String, Object> transfer2Map(List<Element> elements, List<Map<String, Object>> list) {
Map<String, Object> map = new HashMap<String, Object>();
for (Element element : elements) {
String name = element.getName();
//如果是定义成数组
if (ARRAY_PROPERTY.contains(name)) {
//继续递归循环
List<Map<String, Object>> sublist = new ArrayList<Map<String, Object>>();
Map<String, Object> subMap = this.transfer2Map(element.elements(), sublist);
//根据key获取是否已经存在
Object object = map.get(name);
//如果存在,合并
if (object != null) {
List<Map<String, Object>> olist = (List<Map<String, Object>>) object;
olist.add(subMap);
map.put(name, olist);
} else {
//否则直接存入map
map.put(name, sublist);
}
} else {
//单个值存入map
map.put(name, element.getTextTrim());
}
}
//存入list中
if (list != null) {
list.add(map);
}
//返回结果集合
return map;
}
}