private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
        {
            do
            {
                switch (reader.TokenType)
                {
                case JsonToken.PropertyName:
                    if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
                    {
                        throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
                    }

                    string propertyName = reader.Value.ToString();
                    reader.Read();

                    if (reader.TokenType == JsonToken.StartArray)
                    {
                        int count = 0;
                        while (reader.Read() && reader.TokenType != JsonToken.EndArray)
                        {
                            DeserializeValue(reader, document, manager, propertyName, currentNode);
                            count++;
                        }

                        if (count == 1 && WriteArrayAttribute)
                        {
                            IXmlElement arrayElement = currentNode.ChildNodes.CastValid <IXmlElement>().Single(n => n.LocalName == propertyName);
                            AddJsonArrayAttribute(arrayElement, document);
                        }
                    }
                    else
                    {
                        DeserializeValue(reader, document, manager, propertyName, currentNode);
                    }
                    break;

                case JsonToken.StartConstructor:
                    string constructorName = reader.Value.ToString();

                    while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
                    {
                        DeserializeValue(reader, document, manager, constructorName, currentNode);
                    }
                    break;

                case JsonToken.Comment:
                    currentNode.AppendChild(document.CreateComment((string)reader.Value));
                    break;

                case JsonToken.EndObject:
                case JsonToken.EndArray:
                    return;

                default:
                    throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + reader.TokenType);
                }
            } while (reader.TokenType == JsonToken.PropertyName || reader.Read());
            // don't read if current token is a property. token was already read when parsing element attributes
        }
Пример #2
0
    private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
    {
      do
      {
        switch (reader.TokenType)
        {
          case JsonToken.PropertyName:
            if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
              throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");

            string propertyName = reader.Value.ToString();
            reader.Read();

            if (reader.TokenType == JsonToken.StartArray)
            {
              int count = 0;
              while (reader.Read() && reader.TokenType != JsonToken.EndArray)
              {
                DeserializeValue(reader, document, manager, propertyName, currentNode);
                count++;
              }

              if (count == 1 && WriteArrayAttribute)
              {
                IXmlElement arrayElement = currentNode.ChildNodes.CastValid<IXmlElement>().Single(n => n.LocalName == propertyName);
                AddJsonArrayAttribute(arrayElement, document);
              }
            }
            else
            {
              DeserializeValue(reader, document, manager, propertyName, currentNode);
            }
            break;
          case JsonToken.StartConstructor:
            string constructorName = reader.Value.ToString();

            while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
            {
              DeserializeValue(reader, document, manager, constructorName, currentNode);
            }
            break;
          case JsonToken.Comment:
            currentNode.AppendChild(document.CreateComment((string)reader.Value));
            break;
          case JsonToken.EndObject:
          case JsonToken.EndArray:
            return;
          default:
            throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + reader.TokenType);
        }
      } while (reader.TokenType == JsonToken.PropertyName || reader.Read());
      // don't read if current token is a property. token was already read when parsing element attributes
    }
Пример #3
0
        private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
        {
            do
            {
                JsonToken tokenType = reader.TokenType;
                switch (tokenType)
                {
                case JsonToken.StartConstructor:
                {
                    string str = reader.Value.ToString();
                    while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
                    {
                        this.DeserializeValue(reader, document, manager, str, currentNode);
                    }
                    continue;
                }

                case JsonToken.PropertyName:
                {
                    if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
                    {
                        throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
                    }
                    string str1 = reader.Value.ToString();
                    reader.Read();
                    if (reader.TokenType != JsonToken.StartArray)
                    {
                        this.DeserializeValue(reader, document, manager, str1, currentNode);
                    }
                    else
                    {
                        int num = 0;
                        while (reader.Read() && reader.TokenType != JsonToken.EndArray)
                        {
                            this.DeserializeValue(reader, document, manager, str1, currentNode);
                            num++;
                        }
                        if (num == 1 && this.WriteArrayAttribute)
                        {
                            IXmlElement xmlElement = currentNode.ChildNodes.CastValid <IXmlElement>().Single <IXmlElement>((IXmlElement n) => n.LocalName == str1);
                            this.AddJsonArrayAttribute(xmlElement, document);
                        }
                    }
                    continue;
                }

                case JsonToken.Comment:
                {
                    currentNode.AppendChild(document.CreateComment((string)reader.Value));
                    continue;
                }

                default:
                {
                    if (tokenType == JsonToken.EndObject || tokenType == JsonToken.EndArray)
                    {
                        break;
                    }
                    else
                    {
                        throw new JsonSerializationException(string.Concat("Unexpected JsonToken when deserializing node: ", reader.TokenType));
                    }
                }
                }
                return;
            }while (reader.TokenType == JsonToken.PropertyName || reader.Read());
        }
        private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
        {
            JsonToken tokenType;

            while (true)
            {
                tokenType = reader.TokenType;
                switch (tokenType)
                {
                case JsonToken.StartConstructor:
                {
                    string propertyName2 = reader.Value.ToString();
                    while (reader.Read())
                    {
                        if (reader.TokenType == JsonToken.EndConstructor)
                        {
                            break;
                        }
                        this.DeserializeValue(reader, document, manager, propertyName2, currentNode);
                    }
                    goto IL_182;
                }

                case JsonToken.PropertyName:
                {
                    if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
                    {
                        goto Block_3;
                    }
                    string propertyName = reader.Value.ToString();
                    reader.Read();
                    if (reader.TokenType != JsonToken.StartArray)
                    {
                        this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                        goto IL_182;
                    }
                    int num = 0;
                    while (reader.Read() && reader.TokenType != JsonToken.EndArray)
                    {
                        this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                        num++;
                    }
                    if (num == 1 && this.WriteArrayAttribute)
                    {
                        IXmlElement element = currentNode.ChildNodes.OfType <IXmlElement>().Single((IXmlElement n) => n.LocalName == propertyName);
                        this.AddJsonArrayAttribute(element, document);
                        goto IL_182;
                    }
                    goto IL_182;
                }

                case JsonToken.Comment:
                    currentNode.AppendChild(document.CreateComment((string)reader.Value));
                    goto IL_182;
                }
                break;
IL_182:
                if (reader.TokenType != JsonToken.PropertyName && !reader.Read())
                {
                    return;
                }
            }
            switch (tokenType)
            {
            case JsonToken.EndObject:
            case JsonToken.EndArray:
                return;

            default:
                throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + reader.TokenType);
            }
Block_3:
            throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
        }
Пример #5
0
        private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
        {
            do
            {
                switch (reader.TokenType)
                {
                case JsonToken.StartConstructor:
                {
                    string propertyName = reader.Value.ToString();
                    while (reader.Read() && (reader.TokenType != JsonToken.EndConstructor))
                    {
                        this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                    }
                    break;
                }

                case JsonToken.PropertyName:
                {
                    if ((currentNode.NodeType == XmlNodeType.Document) && (document.DocumentElement != null))
                    {
                        throw JsonSerializationException.Create(reader, "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
                    }
                    string propertyName = reader.Value.ToString();
                    reader.Read();
                    if (reader.TokenType == JsonToken.StartArray)
                    {
                        int num = 0;
                        while (reader.Read() && (reader.TokenType != JsonToken.EndArray))
                        {
                            this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                            num++;
                        }
                        if ((num == 1) && this.WriteArrayAttribute)
                        {
                            foreach (IXmlElement element in currentNode.ChildNodes)
                            {
                                if ((element != null) && (element.LocalName == propertyName))
                                {
                                    this.AddJsonArrayAttribute(element, document);
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                    }
                    break;
                }

                case JsonToken.Comment:
                    currentNode.AppendChild(document.CreateComment((string)reader.Value));
                    break;

                case JsonToken.EndObject:
                case JsonToken.EndArray:
                    return;

                default:
                    throw JsonSerializationException.Create(reader, "Unexpected JsonToken when deserializing node: " + reader.TokenType);
                }
            }while ((reader.TokenType == JsonToken.PropertyName) || reader.Read());
        }
Пример #6
0
        private void DeserializeNode(
            JsonReader reader,
            IXmlDocument document,
            XmlNamespaceManager manager,
            IXmlNode currentNode)
        {
            do
            {
                switch (reader.TokenType)
                {
                case JsonToken.StartConstructor:
                    string propertyName1 = reader.Value.ToString();
                    while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
                    {
                        this.DeserializeValue(reader, document, manager, propertyName1, currentNode);
                    }
                    break;

                case JsonToken.PropertyName:
                    if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
                    {
                        throw JsonSerializationException.Create(reader,
                                                                "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifying a DeserializeRootElementName.");
                    }
                    string propertyName2 = reader.Value.ToString();
                    reader.Read();
                    if (reader.TokenType == JsonToken.StartArray)
                    {
                        int num = 0;
                        while (reader.Read() && reader.TokenType != JsonToken.EndArray)
                        {
                            this.DeserializeValue(reader, document, manager, propertyName2, currentNode);
                            ++num;
                        }

                        if (num == 1 && this.WriteArrayAttribute)
                        {
                            using (List <IXmlNode> .Enumerator enumerator = currentNode.ChildNodes.GetEnumerator()) {
                                while (enumerator.MoveNext())
                                {
                                    IXmlElement current = enumerator.Current as IXmlElement;
                                    if (current != null && current.LocalName == propertyName2)
                                    {
                                        this.AddJsonArrayAttribute(current, document);
                                        break;
                                    }
                                }

                                break;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    {
                        this.DeserializeValue(reader, document, manager, propertyName2, currentNode);
                        break;
                    }

                case JsonToken.Comment:
                    currentNode.AppendChild(document.CreateComment((string)reader.Value));
                    break;

                case JsonToken.EndObject:
                    return;

                case JsonToken.EndArray:
                    return;

                default:
                    throw JsonSerializationException.Create(reader,
                                                            "Unexpected JsonToken when deserializing node: " + (object)reader.TokenType);
                }
            } while (reader.Read());
        }
Пример #7
0
 // Token: 0x060006EC RID: 1772
 // RVA: 0x00038AB8 File Offset: 0x00036CB8
 private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
 {
     JsonToken tokenType;
     while (true)
     {
         tokenType = reader.TokenType;
         switch (tokenType)
         {
         case JsonToken.StartConstructor:
         {
             string propertyName2 = reader.Value.ToString();
             while (reader.Read())
             {
                 if (reader.TokenType == JsonToken.EndConstructor)
                 {
                     break;
                 }
                 this.DeserializeValue(reader, document, manager, propertyName2, currentNode);
             }
             goto IL_44;
         }
         case JsonToken.PropertyName:
         {
             if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
             {
                 goto IL_17B;
             }
             string propertyName = reader.Value.ToString();
             reader.Read();
             if (reader.TokenType != JsonToken.StartArray)
             {
                 this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                 goto IL_44;
             }
             int num = 0;
             while (reader.Read())
             {
                 if (reader.TokenType == JsonToken.EndArray)
                 {
                     break;
                 }
                 this.DeserializeValue(reader, document, manager, propertyName, currentNode);
                 num++;
             }
             if (num == 1 && this.WriteArrayAttribute)
             {
                 IXmlElement element = Enumerable.Single<IXmlElement>(Enumerable.OfType<IXmlElement>(currentNode.ChildNodes), (IXmlElement n) => n.LocalName == propertyName);
                 this.AddJsonArrayAttribute(element, document);
                 goto IL_44;
             }
             goto IL_44;
         }
         case JsonToken.Comment:
             currentNode.AppendChild(document.CreateComment((string)reader.Value));
             goto IL_44;
         }
         break;
         IL_44:
         if (reader.TokenType != JsonToken.PropertyName && !reader.Read())
         {
             return;
         }
     }
     switch (tokenType)
     {
     case JsonToken.EndObject:
     case JsonToken.EndArray:
         return;
     default:
         throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + reader.TokenType);
     }
     return;
     IL_17B:
     throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
 }
Пример #8
0
 private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
 {
   do
   {
     switch (reader.TokenType)
     {
       case JsonToken.StartConstructor:
         string propertyName1 = reader.Value.ToString();
         while (reader.Read() && reader.TokenType != JsonToken.EndConstructor)
           this.DeserializeValue(reader, document, manager, propertyName1, currentNode);
         break;
       case JsonToken.PropertyName:
         if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
           throw new JsonSerializationException("JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
         string propertyName = reader.Value.ToString();
         reader.Read();
         if (reader.TokenType == JsonToken.StartArray)
         {
           int num = 0;
           while (reader.Read() && reader.TokenType != JsonToken.EndArray)
           {
             this.DeserializeValue(reader, document, manager, propertyName, currentNode);
             ++num;
           }
           if (num == 1 && this.WriteArrayAttribute)
           {
             this.AddJsonArrayAttribute(Enumerable.Single<IXmlElement>(CollectionUtils.CastValid<IXmlElement>((IEnumerable) currentNode.ChildNodes), (Func<IXmlElement, bool>) (n => n.LocalName == propertyName)), document);
             break;
           }
           else
             break;
         }
         else
         {
           this.DeserializeValue(reader, document, manager, propertyName, currentNode);
           break;
         }
       case JsonToken.Comment:
         currentNode.AppendChild(document.CreateComment((string) reader.Value));
         break;
       case JsonToken.EndObject:
         return;
       case JsonToken.EndArray:
         return;
       default:
         throw new JsonSerializationException("Unexpected JsonToken when deserializing node: " + (object) reader.TokenType);
     }
   }
   while (reader.TokenType == JsonToken.PropertyName || reader.Read());
 }
        private void DeserializeNode(JsonReader reader, IXmlDocument document, XmlNamespaceManager manager, IXmlNode currentNode)
        {
            do
            {
                JsonToken tokenType = reader.TokenType;
                switch (tokenType)
                {
                case JsonToken.StartConstructor:
                {
                    string str = reader.Value.ToString();
                    while (reader.Read())
                    {
                        if (reader.TokenType != JsonToken.EndConstructor)
                        {
                            this.DeserializeValue(reader, document, manager, str, currentNode);
                        }
                        else
                        {
                            goto Label0;
                        }
                    }
                    goto Label0;
                }

                case JsonToken.PropertyName:
                {
                    if (currentNode.NodeType == XmlNodeType.Document && document.DocumentElement != null)
                    {
                        throw JsonSerializationException.Create(reader, "JSON root object has multiple properties. The root object must have a single property in order to create a valid XML document. Consider specifing a DeserializeRootElementName.");
                    }
                    string str1 = reader.Value.ToString();
                    reader.Read();
                    if (reader.TokenType != JsonToken.StartArray)
                    {
                        this.DeserializeValue(reader, document, manager, str1, currentNode);
                        continue;
                    }
                    else
                    {
                        int num = 0;
                        while (reader.Read() && reader.TokenType != JsonToken.EndArray)
                        {
                            this.DeserializeValue(reader, document, manager, str1, currentNode);
                            num++;
                        }
                        if (num != 1 || !this.WriteArrayAttribute)
                        {
                            continue;
                        }
                        List <IXmlNode> .Enumerator enumerator = currentNode.ChildNodes.GetEnumerator();
                        try
                        {
                            while (enumerator.MoveNext())
                            {
                                IXmlElement current = enumerator.Current as IXmlElement;
                                if (current == null || !(current.LocalName == str1))
                                {
                                    continue;
                                }
                                this.AddJsonArrayAttribute(current, document);
                                goto Label0;
                            }
                            continue;
                        }
                        finally
                        {
                            ((IDisposable)enumerator).Dispose();
                        }
                    }
                    break;
                }

                case JsonToken.Comment:
                {
                    currentNode.AppendChild(document.CreateComment((string)reader.Value));
                    continue;
                }

                default:
                {
                    if (tokenType == JsonToken.EndObject || tokenType == JsonToken.EndArray)
                    {
                        break;
                    }
                    else
                    {
                        throw JsonSerializationException.Create(reader, string.Concat("Unexpected JsonToken when deserializing node: ", reader.TokenType));
                    }
                }
                }
                return;

Label0:
            }while (reader.TokenType == JsonToken.PropertyName || reader.Read());
        }