valor saber obtener nodo modificar manipular leer existe especifico ejemplos c# xml serialization hyperlink cyclic

saber - C#: xml serialización de nodos con enlaces cíclicos



saber si existe nodo xml c# (2)

Tengo un nodo de clase algo como esto:

class Node { IEnumerable<Node> inputs; }

Que básicamente define un gráfico simple. Quiero serializar mi gráfico a una forma legible por humanos, por lo que normalmente diría que xml sería el camino a seguir. Pero XML no se hizo con las dependencias cíclicas en mente :)

Entonces, ¿cuál sería la mejor manera de ir para la serialización de mi gráfico?

Puedo pensar en algunas maneras:

  • zanja XML, crea mi propio formato.
  • use XML, etiquete cada nodo con una ID única, almacene las listas de conexiones separadas de los Nodos y resuelva después de la carga

Pero creo que otras personas deben haber tenido este mismo problema antes, por lo que podría haber algunas mejores opciones. ¿Alguien sabe de un enfoque sólido?


Para xml, iría con el enfoque id (cambiando el modelo DTO de manera que no sea cíclico).

Tenga en cuenta que DataContractSerializer puede admitir gráficos de objetos cíclicos de forma automática al pasar true para la opción preserveObjectReferences en los constructores sobrecargados; no será tan simple como la salida de XmlSerializer , pero seguirá siendo legible.


Si cambia a WCF DataContractSerializer, puede conservar las Referencias de objeto (en 3.5 SP 1 y posterior)

[DataContract(IsReference=true)]

Sowmy tiene una buena redacción aquí