public XDocument Serialize(IGraphSerializable graph, bool useShortTags = false) { IXmlElementName nameProvider = new XmlStandardElementNames(); if (useShortTags) { nameProvider = new XmlShortElementNames(); } XDocument result = serializer.Serialize(graph, useShortTags); if (result != null) { XElement extensionNode = new XElement(extNames.ExtensionListElement); // pour chaque extensions on rempli le noeud extension foreach (IXmlExtension ext in extensions) { extensionNode.Add(GenerateExtensionElement(ext)); } result.Root.Element(nameProvider.TypeListElement).AddAfterSelf(extensionNode); } return(result); }
private void BuildTables(IGraphSerializable g) { int typeAlias = 0; int nodeId = 0; foreach (IVertex v in g) { if (!typeAliasTable.ContainsKey(v.TypeIdentity)) { typeAliasTable.Add(v.TypeIdentity, typeAlias++); } if (!nodeIdTable.ContainsKey(v)) { nodeIdTable.Add(v, nodeId++); } foreach (IEdge e in v.Links) { if (!typeAliasTable.ContainsKey(e.TypeIdentity)) { typeAliasTable.Add(e.TypeIdentity, typeAlias++); } } } if (g is Graph) { Graph graph = g as Graph; foreach (GraphObjectTypeInfo typeInfo in graph.RegisteredTypes) { if (!typeAliasTable.ContainsKey(typeInfo)) { typeAliasTable.Add(typeInfo, typeAlias++); } } } }
private void BuildTables(IGraphSerializable g) { int nodeId = 0; foreach (IVertex v in g) { if (!nodeIdTable.ContainsKey(v)) { nodeIdTable.Add(v, nodeId++); } } }
private XElement GenerateAnnotationsElement(IGraphSerializable g) { XElement result = new XElement(nameProvider.AnnotationListElement); foreach (Tuple <Guid, Annotation> t in g.GetAllAnnotations()) { result.Add(new XElement(nameProvider.AnnotationElement, new XAttribute(nameProvider.AnnotationNamespaceAttribute, t.Item2.Namespace ?? ""), new XAttribute(nameProvider.AnnotationKeyAttribute, t.Item2.Key), new XAttribute(nameProvider.AnnotationValueAttribute, t.Item2.Value), new XElement(nameProvider.AnnotationTargetElement, new XAttribute(nameProvider.AnnotationTargetTypeAttribute, nameProvider.AnnotationTargetAttributeValueExternal), new XAttribute(nameProvider.AnnotationTargetIdAttribute, t.Item1)))); } return(result); }
public XDocument Serialize(IGraphSerializable g, bool useShortTags = false) { BuildTables(g); XDocument doc = new XDocument(); XElement root = new XElement(XmlHeaderNames.RootElement, new XElement(XmlHeaderNames.HeaderElement, new XAttribute(XmlHeaderNames.VersionAttribute, "1.0"), new XAttribute(XmlHeaderNames.UseShortTagsAttribute, useShortTags ? XmlHeaderNames.StringBooleanValueTrue : XmlHeaderNames.StringBooleanValueFalse))); doc.Add(root); if (useShortTags) { nameProvider = new XmlShortElementNames(); } root.Add(GenerateTypesElement()); root.Add(GenerateNodesElement()); root.Add(GenerateEdgesElement()); root.Add(GenerateAnnotationsElement(g)); return(doc); }