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 }
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 }
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."); }
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()); }
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()); }
// 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."); }
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()); }