Quickgraph GraphML 역 직렬화의 Vertex Factory

GoMati

나는 이것을 한동안 찾고 있었지만 아무것도 찾을 수 없었다.

C #에서 Quickgraph를 사용하여 GraphML에서 그래프를 역 직렬화하려고합니다. Vertex 및 Edge를 나타내는 데 사용하는 클래스는 다음과 같습니다.

[Serializable]
public class Room
{
    public Room(int id, double x, double y)
    {
        this.Ids = id;
        this.x = x;
        this.y = y;
    }

    [XmlAttribute("id")]
    public int Ids { get; set; }

    [XmlAttribute]
    public double x { get; set; }

    [XmlAttribute]
    public double y { get; set; }

}

[Serializable]
public class HouseEdge<TVertex> : Edge<TVertex>
{
    public string Name { get; set; }

    public HouseEdge(TVertex source, TVertex target)
        : base(source, target)
    {
    }
}

그리고 DeserializeFromGraphML 메서드를 사용하여 코드를 역 직렬화하려고합니다.

XmlReader xreader = getXMLReader("//house.xml");
IdentifiableVertexFactory<Room> ivf = new IdentifiableVertexFactory<Room>(makeTest);
IdentifiableEdgeFactory<Room, HouseEdge<Room>> ief = new IdentifiableEdgeFactory<Room, HouseEdge<Room>>(makeTest2);
graph.DeserializeFromGraphML<Room, HouseEdge<Room>, AdjacencyGraph<Room, HouseEdge<Room>>>(xreader, ivf, ief);
xreader.Close();

다음은 makeTest 및 makeTest2의 코드입니다.

private Room makeTest(string cos)
{
    MessageBox.Show(cos);
    return new Room(11, 12.0, 13.0);
}

private HouseEdge<Room> makeTest2(Room one, Room two, string cos)
{
    MessageBox.Show(cos);
    return new HouseEdge<Room>(one, two);
}

그래서-내 XML 파일에는 (0,0,0)과 (1,1,1)과 그 사이의 가장자리라는 두 개의 꼭지점이 있습니다. 역 직렬화하면 가장자리는 괜찮지 만 정점은 (0,12,0) 및 (1,12,1)이됩니다. 내가 놓친 것이 있어야합니다 (12 개는 makeTest 메서드에서 나옴). cos변수는 그래프의 "Vertices"에서 꼭짓점의 위치와 같은 숫자 0과 1 만 가지고 있습니다 (이것이 MessageBox에 표시됩니다).

언뜻보기에는 복잡 할 수 있지만 정말 간단할까요? 내가 뭔가를 놓치고 있습니까?

미리 감사드립니다!

GoMati

내 연구에 따르면 이것은 라이브러리의 버그입니다 (또는이 라이브러리를 제대로 사용할 수없는 사람들이 더 많습니다). 다음 은 다른 사람들이 나와 같은 문제를 경험하는 도서관 포럼의 토론 중 하나입니다.

이 때문에 LINQ to XML로 코드를 만들고 수동으로 수행했습니다. 일반 XML을 탐색하는 것과 같습니다. 기억해야 할 한 가지는 적절한 XNames를 사용하는 것입니다. 문자열을 요소 이름으로 사용하는 것은 단순히 작동하지 않기 때문입니다. 예를 들면 :

XName XNgraph = XName.Get("graph", "http://graphml.graphdrawing.org/xmlns");
var edges = xelement.Elements(XNgraph)

저와 같은 문제가 있으면 행운을 빕니다. 제가 조금 도와줬으면 좋겠습니다. :)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Java OOP의 역 직렬화

분류에서Dev

자바의 역 직렬화

분류에서Dev

자바의 역 직렬화

분류에서Dev

Jackson의 다형성 직렬화 / 역 직렬화 및 사용자 지정 직렬화 / 역 직렬화

분류에서Dev

역 직렬화 : NullReferenceException

분류에서Dev

C # 역 직렬화

분류에서Dev

GSON 역 직렬화

분류에서Dev

Protobuf 역 직렬화

분류에서Dev

JSON 역 직렬화

분류에서Dev

잭슨 사용자 정의 직렬화 및 역 직렬화

분류에서Dev

EventStore / EventHub의 메시지 직렬화 / 역 직렬화

분류에서Dev

Swift3에서 객체의 직렬화 및 역 직렬화

분류에서Dev

localstorage의 TypeScript 유형 직렬화 / 역 직렬화

분류에서Dev

QuickGraph에서 정점의 차수 찾기

분류에서Dev

F # 대 C #의 역 직렬화

분류에서Dev

중첩 된 JSON의 Unity 역 직렬화

분류에서Dev

optional + nullable 값의 Gson 역 직렬화

분류에서Dev

목록의 XML 역 직렬화

분류에서Dev

자바의 GSON 역 직렬화

분류에서Dev

c #-특정 JSON의 역 직렬화

분류에서Dev

클래스의 Jackson 역 직렬화

분류에서Dev

배열의 XML 역 직렬화

분류에서Dev

개체의 Arraylist 역 직렬화

분류에서Dev

Jackson의 일반 튜플 역 직렬화

분류에서Dev

튜플의 JSON 역 직렬화 문제?

분류에서Dev

역 직렬화 클래스의 Autowire

분류에서Dev

배열의 JSON 배열 역 직렬화

분류에서Dev

SWXMLHash의 역 직렬화 오류

분류에서Dev

직렬화 및 역 직렬화 람다