Open Celsiusss opened 3 years ago
Hello @ende124, Thank you for reporting the bug, I will try to have a look at it as soon as possible. By any chance, did you have some time to investigate a bit? My feeling about it is kindly that serialization is based on Edge class which can explain that TaggedEdge are not taken into account. BTW I need to check it in more details to be sure.
So I dug a bit in the code related to the GraphML serializer and the problem you're facing is because the serializer indeed not takes into account properties of unsupported types (types specified by the GraphML documentation) and also is limited to properties directly declared in the Edge type you are using. This means that
// This will work
public class CustomEdge : Edge<Node>
{
[XmlAttribute("weight")]
public float weight { get; set; }
}
// This will NOT work
public class Data
{
[XmlAttribute("weight")]
public float weight { get; set; }
}
public class CustomEdge : TaggedEdge<Node, Data>
{
}
Of course it would be better to have both working. I will try to add support of this. Note that if you have some start of work on the subject feel free to suggest it.
@KeRNeLith That makes sense, I'm glad there is a workaround, it did not cross my mind that one can simply extend Edge. TaggedEdge is preferable, but I have not taken the time to dig into this myself yet. Thank you for looking into this
@ende124 If the method with a custom Edge fit your needs at least temporarily I think you can go this way. BTW I keep in mind to add support of those kind of Edge (taggued ones) for future releases as it also makes sense.
But I can't promise since it requires quite some rework on the GraphML serializer. But I'm optimistic about feasability ^^
@KeRNeLith yeah that should not be too much of a problem for me. Appreciate your help and effort on this project :)
Describe the bug Serializing a graph to GraphML, discards TaggedEdge data.
To Reproduce Steps to reproduce the behavior:
Expected behavior Edge data to be included in the graphml as specified here: http://graphml.graphdrawing.org/primer/graphml-primer.html#AttributesDefinition
Additional context Example code to reproduce this problem
Example code:
``` using System; using System.Xml; using QuikGraph; using QuikGraph.Serialization; using System.Xml.Serialization; using System.IO; namespace Test { public class Test { public static void Main() { var graph = new BidirectionalGraphThis code will print out:
See that this holds vertex data, but no edge data.