private TreeNode xmlResponseItemToTreeNode(XMLResponseItem item)
 {
     TreeNode node = new TreeNode();
     node.Text = item.ItemName;
     node.ToolTipText = item.ItemRemark;
     switch (item.Type)
     {
         case ResponseItemType.INT:
         case ResponseItemType.STRING:
             break;
         case ResponseItemType.DICT:
             foreach (XMLResponseItem subitem in item.SubItems.Values)
             {
                 node.Nodes.Add(xmlResponseItemToTreeNode(subitem));
             }
             break;
         case ResponseItemType.LIST:
             if (item.IsEntryList)
             {
                 foreach (XMLResponseItem subitem in item.SubItems.Values)
                 {
                     node.Nodes.Add(xmlResponseItemToTreeNode(subitem));
                 }
             }
             break;
         default:
             break;
     }
     switch (item.matchResult)
     {
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.DICT_MATCHED:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.INT_MATCHED:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.LIST_ENTRY_MATCHED:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.LIST_STRING_MATCHED:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.STRING_MATCHED:
             node.BackColor = Color.LightGreen;
             break;
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.DICT_NULL:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.LIST_NULL:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.NULL_MATCHED:
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.LIST_OR_DICT_PARTLY_MATCHED:
             node.BackColor = Color.Yellow;
             break;
         case DataStructure.Matcher.JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH:
             node.BackColor = Color.White;
             break;
         default:
             node.BackColor = Color.Red;
             break;
     }
     switch (item.Type)
     {
         case ResponseItemType.STRING:
             node.ImageIndex = 0;
             node.SelectedImageIndex = 0;
             break;
         case ResponseItemType.INT:
             node.ImageIndex = 1;
             node.SelectedImageIndex = 1;
             break;
         case ResponseItemType.LIST:
             node.ImageIndex = 2;
             node.SelectedImageIndex = 2;
             break;
         case ResponseItemType.DICT:
             node.ImageIndex = 3;
             node.SelectedImageIndex = 3;
             break;
         default:
             break;
     }
     nodeMap.Add(node, item);
     node.ContextMenuStrip = cmsTreeNode;
     return node;
 }
Ejemplo n.º 2
0
        static JsonXMLItemMatcher matchJsonEntryWithXMLItem(JsonResponseEntry jsonEntry, XMLResponseItem xmlItem)
        {
            String itemKey = xmlItem.ItemName;
            JsonXMLItemMatcher itemMatcher = new JsonXMLItemMatcher();
            switch (jsonEntry.type)
            {
                case JsonResponseEntry.ResponseEntryType.DICT:
                    if (xmlItem.Type == ResponseItemType.DICT)
                    {
                        JsonXMLMatcher matcher = matchJsonWithXML(jsonEntry.subEntry, xmlItem.SubItems, false);
                        switch (matcher.matchResult)
                        {
                            case JsonXMLMatcher.MatchResult.LIST_OR_DICT_NULL:
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.DICT_NULL;
                                itemMatcher.strResult = itemKey + "->dict null\n    " + matcher.ToString().Replace("\n", "\n    ");
                                break;
                            case JsonXMLMatcher.MatchResult.MATCH:
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.DICT_MATCHED;
                                break;
                            case JsonXMLMatcher.MatchResult.MATCH_PARTLY:
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.LIST_OR_DICT_PARTLY_MATCHED;
                                itemMatcher.strResult = itemKey + "-> dict partly match\n    " + matcher.ToString().Replace("\n", "\n    ");
                                break;
                            case JsonXMLMatcher.MatchResult.NOT_MATCH:
                                itemMatcher.strResult = itemKey + "-> Not match\n    " + matcher.ToString().Replace("\n", "\n    ");
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                                break;
                        }
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is DICT\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.DICT_NULL:
                    if (xmlItem.Type == ResponseItemType.DICT)
                    {
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.DICT_NULL;
                        itemMatcher.strResult = itemKey + "-> Dict null\n";
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is"
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + "but in json is DICT_NULL\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.LIST_ENTRY:
                    if (xmlItem.Type == ResponseItemType.LIST)
                    {
                        JsonXMLMatcher matcher = matchJsonWithXML(jsonEntry.listEntry[0], xmlItem.SubItems, false);
                        switch (matcher.matchResult)
                        {
                            case JsonXMLMatcher.MatchResult.LIST_OR_DICT_NULL:
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.DICT_NULL;
                                itemMatcher.strResult = itemKey + "->list null\n" + matcher.ToString().Replace("\n", "\n    ");
                                break;
                            case JsonXMLMatcher.MatchResult.MATCH:
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.DICT_MATCHED;
                                break;
                            case JsonXMLMatcher.MatchResult.MATCH_PARTLY:
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.LIST_OR_DICT_PARTLY_MATCHED;
                                itemMatcher.strResult = itemKey + "-> List partly match\n    " + matcher.ToString().Replace("\n", "\n    ");
                                break;
                            case JsonXMLMatcher.MatchResult.NOT_MATCH:
                                itemMatcher.strResult = itemKey + "-> Not match\n    " + matcher.ToString().Replace("\n", "\n    ");
                                itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                                break;
                        }
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is LIST_ENTRY\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.LIST_STRING:
                    if (xmlItem.Type == ResponseItemType.LIST)
                    {
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.LIST_STRING_MATCHED;
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is LIST_STRING\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.LIST_NULL:
                    if (xmlItem.Type == ResponseItemType.LIST)
                    {
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.LIST_NULL;
                        itemMatcher.strResult = itemKey + "-> List null\n";
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is LIST_NULL\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.STRING:
                    if (xmlItem.Type == ResponseItemType.STRING)
                    {
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.STRING_MATCHED;
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is STRING\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.INT:
                    if (xmlItem.Type == ResponseItemType.INT)
                    {
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.INT_MATCHED;
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is INT\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                case JsonResponseEntry.ResponseEntryType.NULL:
                    if (xmlItem.Type == ResponseItemType.INT || xmlItem.Type == ResponseItemType.STRING)
                    {
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.NULL_MATCHED;
                    }
                    else
                    {
                        itemMatcher.strResult = itemKey + "-> Type not match in xml is "
                            + XMLResponseItemTypeToString(xmlItem.Type)
                            + " but in json is NULL\n";
                        itemMatcher.itemMatchResult = JsonXMLItemMatcher.ItemMatchResult.TYPE_NOT_MATCH;
                    }
                    break;
                default:
                    break;
            }

            if (itemMatcher.itemMatchResult > xmlItem.matchResult)
            {
                xmlItem.matchResult = itemMatcher.itemMatchResult;
            }
            return itemMatcher;
        }
Ejemplo n.º 3
0
 static XMLResponseItem getResponseItem(XmlNode xnResponseItem)
 {
     XMLResponseItem responseItem = new XMLResponseItem();
     switch (xnResponseItem.Attributes["type"].Value)
     {
         case "int":
             responseItem.Type = ResponseItemType.INT;
             break;
         case "string":
             responseItem.Type = ResponseItemType.STRING;
             break;
         case "list":
             responseItem.Type = ResponseItemType.LIST;
             break;
         case "dict":
             responseItem.Type = ResponseItemType.DICT;
             break;
         default:
             break;
     }
     responseItem.ItemName = xnResponseItem.SelectSingleNode("name").InnerText;
     responseItem.ItemRemark = xnResponseItem.SelectSingleNode("remark").InnerText;
     if (xnResponseItem.SelectSingleNode("list") == null)
     {
         responseItem.IsEntryList = false;
         XmlNodeList xnlSubItems = xnResponseItem.SelectNodes("item");
         if (xnlSubItems.Count > 0)
         {
             foreach (XmlNode xnSubItem in xnlSubItems)
             {
                 XMLResponseItem subResponseItem = getResponseItem(xnSubItem);
                 responseItem.SubItems.Add(subResponseItem.ItemName, subResponseItem);
             }
         }
     }
     else
     {
         responseItem.IsEntryList = true;
         XmlNodeList xnlSubItems = xnResponseItem.SelectNodes("list/item");
         if (xnlSubItems.Count > 0)
         {
             foreach (XmlNode xnSubItem in xnlSubItems)
             {
                 XMLResponseItem subResponseItem = getResponseItem(xnSubItem);
                 responseItem.SubItems.Add(subResponseItem.ItemName, subResponseItem);
             }
         }
     }
     return responseItem;
 }