Browse Source

增强数据格式校验和转换功能

pull/47/head
lawrencehj 4 years ago
parent
commit
c1d4e1944d
  1. 20
      src/main/java/com/genersoft/iot/vmp/gb28181/utils/NumericUtil.java
  2. 119
      src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java

20
src/main/java/com/genersoft/iot/vmp/gb28181/utils/NumericUtil.java

@ -15,10 +15,26 @@ public class NumericUtil {
public static boolean isDouble(String str) { public static boolean isDouble(String str) {
try { try {
Double num2 = Double.valueOf(str); Double num2 = Double.valueOf(str);
System.out.println("Is Number!" + num2); System.out.println(num2 + " Is an Integer!");
return true; return true;
} catch (Exception e) { } catch (Exception e) {
System.out.println("Is not Number!"); System.out.println(str + " Is not an Integer!");
return false;
}
}
/**
* 判断是否Double格式
* @param str
* @return true/false
*/
public static boolean isInteger(String str) {
try {
int num2 = Integer.valueOf(str);
System.out.println(num2 + " Is Number!");
return true;
} catch (Exception e) {
System.out.println(str + " Is not Number!");
return false; return false;
} }
} }

119
src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java

@ -7,6 +7,9 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.dom4j.Attribute; import org.dom4j.Attribute;
import org.dom4j.Document; import org.dom4j.Document;
import org.dom4j.DocumentException; import org.dom4j.DocumentException;
@ -20,8 +23,7 @@ import org.slf4j.LoggerFactory;
* *
* *
*/ */
public class XmlUtil public class XmlUtil {
{
/** /**
* 日志服务 * 日志服务
*/ */
@ -30,22 +32,18 @@ public class XmlUtil
/** /**
* 解析XML为Document对象 * 解析XML为Document对象
* *
* @param xml * @param xml 被解析的XMl
* 被解析的XMl *
* @return Document * @return Document
*/ */
public static Element parseXml(String xml) public static Element parseXml(String xml) {
{
Document document = null; Document document = null;
// //
StringReader sr = new StringReader(xml); StringReader sr = new StringReader(xml);
SAXReader saxReader = new SAXReader(); SAXReader saxReader = new SAXReader();
try try {
{
document = saxReader.read(sr); document = saxReader.read(sr);
} } catch (DocumentException e) {
catch (DocumentException e)
{
LOG.error("解析失败", e); LOG.error("解析失败", e);
} }
return null == document ? null : document.getRootElement(); return null == document ? null : document.getRootElement();
@ -54,16 +52,12 @@ public class XmlUtil
/** /**
* 获取element对象的text的值 * 获取element对象的text的值
* *
* @param em * @param em 节点的对象
* 节点的对象 * @param tag 节点的tag
* @param tag
* 节点的tag
* @return 节点 * @return 节点
*/ */
public static String getText(Element em, String tag) public static String getText(Element em, String tag) {
{ if (null == em) {
if (null == em)
{
return null; return null;
} }
Element e = em.element(tag); Element e = em.element(tag);
@ -74,16 +68,12 @@ public class XmlUtil
/** /**
* 递归解析xml节点适用于 多节点数据 * 递归解析xml节点适用于 多节点数据
* *
* @param node * @param node node
* node * @param nodeName nodeName
* @param nodeName
* nodeName
* @return List<Map<String, Object>> * @return List<Map<String, Object>>
*/ */
public static List<Map<String, Object>> listNodes(Element node, String nodeName) public static List<Map<String, Object>> listNodes(Element node, String nodeName) {
{ if (null == node) {
if (null == node)
{
return null; return null;
} }
// 初始化返回 // 初始化返回
@ -93,12 +83,9 @@ public class XmlUtil
Map<String, Object> map = null; Map<String, Object> map = null;
// 遍历属性节点 // 遍历属性节点
for (Attribute attribute : list) for (Attribute attribute : list) {
{ if (nodeName.equals(node.getName())) {
if (nodeName.equals(node.getName())) if (null == map) {
{
if (null == map)
{
map = new HashMap<String, Object>(); map = new HashMap<String, Object>();
listMap.add(map); listMap.add(map);
} }
@ -110,12 +97,74 @@ public class XmlUtil
// 遍历当前节点下的所有节点 ,nodeName 要解析的节点名称 // 遍历当前节点下的所有节点 ,nodeName 要解析的节点名称
// 使用递归 // 使用递归
Iterator<Element> iterator = node.elementIterator(); Iterator<Element> iterator = node.elementIterator();
while (iterator.hasNext()) while (iterator.hasNext()) {
{
Element e = iterator.next(); Element e = iterator.next();
listMap.addAll(listNodes(e, nodeName)); listMap.addAll(listNodes(e, nodeName));
} }
return listMap; return listMap;
} }
/**
* xml转json
*
* @param element
* @param json
*/
public static void node2Json(Element element, JSONObject json) {
// 如果是属性
for (Object o : element.attributes()) {
Attribute attr = (Attribute) o;
if (!isEmpty(attr.getValue())) {
json.put("@" + attr.getName(), attr.getValue());
}
}
List<Element> chdEl = element.elements();
if (chdEl.isEmpty() && !isEmpty(element.getText())) {// 如果没有子元素,只有一个值
json.put(element.getName(), element.getText());
}
for (Element e : chdEl) { // 有子元素
if (!e.elements().isEmpty()) { // 子元素也有子元素
JSONObject chdjson = new JSONObject();
node2Json(e, chdjson);
Object o = json.get(e.getName());
if (o != null) {
JSONArray jsona = null;
if (o instanceof JSONObject) { // 如果此元素已存在,则转为jsonArray
JSONObject jsono = (JSONObject) o;
json.remove(e.getName());
jsona = new JSONArray();
jsona.add(jsono);
jsona.add(chdjson);
}
if (o instanceof JSONArray) {
jsona = (JSONArray) o;
jsona.add(chdjson);
}
json.put(e.getName(), jsona);
} else {
if (!chdjson.isEmpty()) {
json.put(e.getName(), chdjson);
}
}
} else { // 子元素没有子元素
for (Object o : element.attributes()) {
Attribute attr = (Attribute) o;
if (!isEmpty(attr.getValue())) {
json.put("@" + attr.getName(), attr.getValue());
}
}
if (!e.getText().isEmpty()) {
json.put(e.getName(), e.getText());
}
}
}
}
public static boolean isEmpty(String str) {
if (str == null || str.trim().isEmpty() || "null".equals(str)) {
return true;
}
return false;
}
} }

Loading…
Cancel
Save