diff --git a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java index 5da9067..b9d0f1a 100644 --- a/src/main/java/com/xydl/cac/util/IcdXmlUtil.java +++ b/src/main/java/com/xydl/cac/util/IcdXmlUtil.java @@ -31,7 +31,7 @@ public class IcdXmlUtil { return icdFile; } - private static void processTypeRoot(JsonNode root, IcdFile icdFile) { + private static void processTypeRoot(JsonNode root, IcdFile icdFile) throws BusinessException { LinkedHashMap configMap = new LinkedHashMap<>(); Map mapLNodeType = buildLNodeTypeMap(root); @@ -77,7 +77,7 @@ public class IcdXmlUtil { } private static void processIEDNode(LinkedHashMap configMap, JsonNode iedNode, - Map mapLNodeType, Map mapDOType, Map mapDAType) { + Map mapLNodeType, Map mapDOType, Map mapDAType) throws BusinessException { String iedName = iedNode.get("name").asText(); List devList = findNodes(iedNode, "LDevice"); @@ -88,7 +88,7 @@ public class IcdXmlUtil { } private static void processTypeDeviceNode(LinkedHashMap configMap, String iedName, JsonNode deviceNode, - Map mapLNodeType, Map mapDOType, Map mapDAType) { + Map mapLNodeType, Map mapDOType, Map mapDAType) throws BusinessException { String ldeviceInst = deviceNode.get("inst").asText(); Map mapLN = buildLNMap(deviceNode); @@ -115,6 +115,9 @@ public class IcdXmlUtil { } JsonNode nodeLNodeType = mapLNodeType.get(lnType); JsonNode nodeDO = findLNodeType_DO_Node(nodeLNodeType, doName); + if (nodeDO == null) { + throw new BusinessException(lnType + "该LNodeType节点下缺少名字为" + doName + "的DO节点"); + } String doType = nodeDO.get("type").asText(); JsonNode nodeDoDesc = nodeDO.get("desc"); String doDesc = null;