Как найти циклическую ссылку во время сериализации XML? - PullRequest
5 голосов
/ 12 марта 2011

Я пытаюсь отладить сериализацию xml.Во время сериализации xml сериализатор «обнаружил циклическую ссылку».Я хотел бы найти это и избавиться от этого.Есть ли какой-нибудь удобный инструмент / подход, который я могу использовать?

Ответы [ 2 ]

2 голосов
/ 12 марта 2011

Обычно это довольно очевидно при ручной проверке ...

Вы можете попробовать сериализовать файл и просто посмотреть на конец файла - это не будет полный XML, очевидно, но этодолжен дать подсказку.

Обратите внимание, что DataContractSerializer способен (с помощью опции) сериализовать полные графы, но у него меньше опций XML, чем у XmlSerializer, а режим графика еще менее похож на XML;ИМО удаление цикла предпочтительнее.Обычно это всего лишь случай чего-то вроде:

[XmlIgnore]
public Person Parent {get;set;}

(т. Е. Сериализуйте только "нисходящие" ссылки)

0 голосов
/ 09 марта 2017
$normalizers->setCircularReferenceHandler(function ($object) {
    return $object->getId();
});
...