/// <summary> /// Triggers the XML parsing of the data file and returns the read Isotopes. /// It turns of XML validation before parsing. /// </summary> /// <returns>a List of Isotope's. Returns an empty list is some reading error occurred.</returns> public IReadOnlyList <IIsotope> ReadIsotopes() { var reader = new XReader(); var handler = new IsotopeHandler(); reader.Handler = handler; try { var settings = new XmlReaderSettings { ValidationType = ValidationType.None, ValidationFlags = System.Xml.Schema.XmlSchemaValidationFlags.None }; var xreader = XmlReader.Create(input, settings); var doc = XDocument.Load(xreader); reader.Read(doc); return(handler.Isotopes); } catch (Exception exception) { Trace.TraceError($"{exception.GetType().Name}: {exception.Message}"); Debug.WriteLine(exception); } return(Array.Empty <IIsotope>()); }
// private functions /// <summary> /// Reads a ChemFile object from input. /// </summary> /// <returns>ChemFile with the content read from the input</returns> private IChemFile ReadChemFile(IChemObjectBuilder bldr) { IChemFile cf = null; XmlReaderSettings setting = new XmlReaderSettings { ValidationFlags = XmlSchemaValidationFlags.None }; InChIHandler handler = new InChIHandler(bldr); try { var r = new XReader { Handler = handler }; XDocument doc = XDocument.Load(input); r.Read(doc); cf = handler.ChemFile; } catch (IOException e) { Trace.TraceError($"IOException: {e.Message}"); Debug.WriteLine(e); } catch (XmlException saxe) { Trace.TraceError($"SAXException: {saxe.Message}"); Debug.WriteLine(saxe); } return(cf); }
/// <summary> /// Reads the atom type mappings from the data file. /// </summary> /// <returns>a <see cref="IReadOnlyDictionary{TKey, TValue}"/> with atom type mappings. <see langword="null"/>, if some reading error occurred.</returns> public IReadOnlyDictionary <string, string> ReadAtomTypeMappings() { IReadOnlyDictionary <string, string> mappings = null; var setting = new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse, ValidationFlags = XmlSchemaValidationFlags.None }; var handler = new OWLAtomTypeMappingHandler(); var parser = XmlReader.Create(input, setting); var reader = new XReader { Handler = handler }; try { var doc = XDocument.Load(parser); reader.Read(doc); mappings = handler.GetAtomTypeMappings(); } catch (IOException exception) { Trace.TraceError(nameof(IOException) + ": " + exception.Message); Debug.WriteLine(exception); } catch (XmlException saxe) { Trace.TraceError(nameof(XmlException) + ": " + saxe.Message); Debug.WriteLine(saxe); } return(mappings ?? Dictionaries.Empty <string, string>()); }
// private functions private IChemFile ReadChemFile(IChemFile file) { Debug.WriteLine("Started parsing from input..."); var setting = new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse, ValidationFlags = XmlSchemaValidationFlags.None, XmlResolver = new CMLResolver() }; XmlReader parser; if (input == null) { Debug.WriteLine($"Parsing from URL: {url}"); parser = XmlReader.Create(url, setting); } else { Debug.WriteLine("Parsing from Reader"); parser = XmlReader.Create(input, setting); } CMLHandler handler = new CMLHandler(file); // copy the manually added conventions foreach (var conv in userConventions.Keys) { handler.RegisterConvention(conv, userConventions[conv]); } var reader = new XReader { Handler = handler }; try { var doc = XDocument.Load(parser); reader.Read(doc); } catch (IOException e) { var error = "Error while reading file: " + e.Message; Trace.TraceError(error); Debug.WriteLine(e); throw new CDKException(error, e); } catch (XmlException saxe) { string error = "Error while parsing XML: " + saxe.Message; Trace.TraceError(error); Debug.WriteLine(saxe); throw new CDKException(error, saxe); } return(file); }
public static EntryDictionary Unmarshal(TextReader reader) { var handler = new DictionaryHandler(); var r = new XReader { Handler = handler }; var doc = XDocument.Load(reader); r.Read(doc); return(handler.Dictionary); }