public ReaderWorker( GraphMLDeserializer <TVertex, TEdge, TGraph> serializer, XmlReader reader, TGraph visitedGraph, IdentifiableVertexFactory <TVertex> vertexFactory, IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory ) { Contract.Requires(serializer != null); Contract.Requires(reader != null); Contract.Requires(visitedGraph != null); Contract.Requires(vertexFactory != null); Contract.Requires(edgeFactory != null); this.serializer = serializer; this.reader = reader; this.visitedGraph = visitedGraph; this.vertexFactory = vertexFactory; this.edgeFactory = edgeFactory; }
public void Deserialize( XmlReader reader, TGraph visitedGraph, IdentifiableVertexFactory <TVertex> vertexFactory, IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory) { Contract.Requires(reader != null); Contract.Requires(visitedGraph != null); Contract.Requires(vertexFactory != null); Contract.Requires(edgeFactory != null); var worker = new ReaderWorker( this, reader, visitedGraph, vertexFactory, edgeFactory); worker.Deserialize(); }
public static void DeserializeFromGraphML <TVertex, TEdge, TGraph>( this TGraph graph, TextReader reader, IdentifiableVertexFactory <TVertex> vertexFactory, IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory) where TEdge : IEdge <TVertex> where TGraph : IMutableVertexAndEdgeListGraph <TVertex, TEdge> { Contract.Requires(graph != null); Contract.Requires(reader != null); Contract.Requires(vertexFactory != null); Contract.Requires(edgeFactory != null); var settings = new XmlReaderSettings(); settings.DtdProcessing = DtdProcessing.Ignore; settings.ValidationFlags = XmlSchemaValidationFlags.None; settings.XmlResolver = new GraphMLXmlResolver(); using (var xreader = XmlReader.Create(reader, settings)) DeserializeFromGraphML <TVertex, TEdge, TGraph>(graph, xreader, vertexFactory, edgeFactory); }
public static void DeserializeFromGraphML <TVertex, TEdge, TGraph>( #if !NET20 this #endif TGraph graph, XmlReader reader, IdentifiableVertexFactory <TVertex> vertexFactory, IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory ) where TEdge : IEdge <TVertex> where TGraph : IMutableVertexAndEdgeListGraph <TVertex, TEdge> { Contract.Requires(graph != null); Contract.Requires(reader != null); Contract.Requires(vertexFactory != null); Contract.Requires(edgeFactory != null); var serializer = new GraphMLDeserializer <TVertex, TEdge, TGraph>(); serializer.Deserialize(reader, graph, vertexFactory, edgeFactory); }
/// <summary> /// Deserializes from the given <paramref name="reader"/> (GraphML graph) into the given <paramref name="graph"/>. /// </summary> /// <typeparam name="TVertex">Vertex type.</typeparam> /// <typeparam name="TEdge">Edge type.</typeparam> /// <typeparam name="TGraph">Graph type.</typeparam> /// <param name="graph">Graph instance to fill.</param> /// <param name="reader">Reader stream.</param> /// <param name="vertexFactory">Vertex factory method.</param> /// <param name="edgeFactory">Edge factory method.</param> public static void DeserializeFromGraphML <TVertex, TEdge, TGraph>( [NotNull] this TGraph graph, [NotNull] TextReader reader, [NotNull] IdentifiableVertexFactory <TVertex> vertexFactory, [NotNull] IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory) where TEdge : IEdge <TVertex> where TGraph : IMutableVertexAndEdgeListGraph <TVertex, TEdge> { if (reader is null) { throw new ArgumentNullException(nameof(reader)); } var settings = new XmlReaderSettings { ValidationFlags = XmlSchemaValidationFlags.None, XmlResolver = new GraphMLXmlResolver() }; using (XmlReader xmlReader = XmlReader.Create(reader, settings)) DeserializeFromGraphML(graph, xmlReader, vertexFactory, edgeFactory); }
public static void DeserializeAndValidateFromGraphML <TVertex, TEdge, TGraph>( #if !NET20 this #endif TGraph graph, TextReader reader, IdentifiableVertexFactory <TVertex> vertexFactory, IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory ) where TEdge : IEdge <TVertex> where TGraph : IMutableVertexAndEdgeListGraph <TVertex, TEdge> { Contract.Requires(graph != null); Contract.Requires(reader != null); Contract.Requires(vertexFactory != null); Contract.Requires(edgeFactory != null); var serializer = new GraphMLDeserializer <TVertex, TEdge, TGraph>(); var settings = new XmlReaderSettings(); // add graphxml schema settings.ValidationType = ValidationType.Schema; settings.XmlResolver = new GraphMLXmlResolver(); AddGraphMLSchema <TVertex, TEdge, TGraph>(settings); try { settings.ValidationEventHandler += ValidationEventHandler; // reader and validating using (var xreader = XmlReader.Create(reader, settings)) serializer.Deserialize(xreader, graph, vertexFactory, edgeFactory); } finally { settings.ValidationEventHandler -= ValidationEventHandler; } }
/// <summary> /// Deserializes from the given <paramref name="reader"/> (GraphML graph) into the given <paramref name="graph"/> /// and checks if content is valid. /// </summary> /// <typeparam name="TVertex">Vertex type.</typeparam> /// <typeparam name="TEdge">Edge type.</typeparam> /// <typeparam name="TGraph">Graph type.</typeparam> /// <param name="graph">Graph instance to fill.</param> /// <param name="reader">Reader stream.</param> /// <param name="vertexFactory">Vertex factory method.</param> /// <param name="edgeFactory">Edge factory method.</param> public static void DeserializeAndValidateFromGraphML <TVertex, TEdge, TGraph>( [NotNull] this TGraph graph, [NotNull] TextReader reader, [NotNull] IdentifiableVertexFactory <TVertex> vertexFactory, [NotNull] IdentifiableEdgeFactory <TVertex, TEdge> edgeFactory) where TEdge : IEdge <TVertex> where TGraph : IMutableVertexAndEdgeListGraph <TVertex, TEdge> { if (reader is null) { throw new ArgumentNullException(nameof(reader)); } var serializer = new GraphMLDeserializer <TVertex, TEdge, TGraph>(); var settings = new XmlReaderSettings { ValidationType = ValidationType.Schema, XmlResolver = new GraphMLXmlResolver(), DtdProcessing = DtdProcessing.Ignore }; // Add GraphML schema AddGraphMLSchema(settings); try { settings.ValidationEventHandler += ValidationEventHandler; // Read and validate using (XmlReader xmlReader = XmlReader.Create(reader, settings)) serializer.Deserialize(xmlReader, graph, vertexFactory, edgeFactory); } finally { settings.ValidationEventHandler -= ValidationEventHandler; } }