/// <summary> /// Build a POCO from an ISourceNode. /// </summary> /// <param name="source"></param> /// <param name="mapping">Optional. The <see cref="ClassMapping" /> for the POCO to build. </param> /// <returns></returns> /// <remarks>If <paramref name="mapping"/> is not supplied, or is <code>Resource</code> or <code>DomainResource</code>, /// the builder will try to determine the actual type to create from the <paramref name="source"/>. </remarks> public Base BuildFrom(ISourceNode source, ClassMapping mapping = null) { if (source == null) { throw Error.ArgumentNull(nameof(source)); } TypedElementSettings typedSettings = new TypedElementSettings { ErrorMode = _settings.IgnoreUnknownMembers ? TypedElementSettings.TypeErrorMode.Ignore : TypedElementSettings.TypeErrorMode.Report }; string dataType; // If dataType is an abstract resource superclass -> ToTypedElement(with type=null) will figure it out; if (mapping == null) { dataType = null; } else if (mapping.IsResource && mapping.NativeType.GetTypeInfo().IsAbstract) { dataType = null; } else { dataType = mapping.Name; } var typedSource = source.ToTypedElement(_inspector, dataType, typedSettings); return(BuildFrom(typedSource)); }
/// <summary> /// Build a POCO from an ISourceNode. /// </summary> /// <param name="source"></param> /// <param name="dataType">Optional. Type of POCO to build. Should be the name of one of the generated POCO classes.</param> /// <returns></returns> /// <remarks>If <paramref name="dataType"/> is not supplied, or is <code>Resource</code> or <code>DomainResource</code>, /// the builder will try to determine the actual type to create from the <paramref name="source"/>. </remarks> public Base BuildFrom(ISourceNode source, string dataType = null) { if (source == null) { throw Error.ArgumentNull(nameof(source)); } TypedElementSettings typedSettings = new TypedElementSettings { ErrorMode = _settings.IgnoreUnknownMembers ? TypedElementSettings.TypeErrorMode.Ignore : TypedElementSettings.TypeErrorMode.Report }; // If dataType is an abstract resource superclass -> ToTypedElement(with type=null) will figure it out; if (dataType == FHIRDefinedType.Resource.GetLiteral() || dataType == FHIRDefinedType.DomainResource.GetLiteral()) { dataType = null; } var typedSource = source.ToTypedElement(new PocoStructureDefinitionSummaryProvider(), dataType, typedSettings); return(BuildFrom(typedSource)); }
internal static ITypedElement ParseToTypedElement(string json, IStructureDefinitionSummaryProvider provider, string rootName = null, FhirJsonParsingSettings settings = null, TypedElementSettings tnSettings = null) { if (json == null) { throw Error.ArgumentNull(nameof(json)); } if (provider == null) { throw Error.ArgumentNull(nameof(provider)); } return(FhirJsonNode.Parse(json, rootName, settings).ToTypedElement(provider, null, tnSettings)); }
public static ITypedElement ParseToTypedElement(string xml, string type, IStructureDefinitionSummaryProvider provider, FhirXmlParsingSettings settings = null, TypedElementSettings tnSettings = null) { if (xml == null) { throw Error.ArgumentNull(nameof(xml)); } if (type == null) { throw Error.ArgumentNull(nameof(type)); } if (provider == null) { throw Error.ArgumentNull(nameof(provider)); } return(FhirXmlNode.Parse(xml, settings).ToTypedElement(provider, type, tnSettings)); }
public ITypedElement getXmlNode(string xml, FhirXmlParsingSettings settings = null, TypedElementSettings tnSettings = null) { settings = settings ?? FhirXmlParsingSettings.CreateDefault(); settings.PermissiveParsing = false; return(XmlParsingHelpers.ParseToTypedElement(xml, new PocoStructureDefinitionSummaryProvider(), settings, tnSettings)); }
public ITypedElement getXmlNode(string xml, FhirXmlParsingSettings settings = null, TypedElementSettings tnSettings = null) => XmlParsingHelpers.ParseToTypedElement(xml, new PocoStructureDefinitionSummaryProvider(), settings, tnSettings);