У меня есть XSD, описывающий мой XML-документ. Из этого XSD я создал классы с помощью XSD.exe.
У меня есть XML-документ около 3800 строк (около 150 КБ).
В веб-сервисе я читаю документ и десериализую его в класс, созданный из XSD. Детальная проверка показала, что ОДИН элемент не десериализован (экземпляр равен нулю).
Я добавил обработчики событий, чтобы перехватить неизвестный элемент, неизвестный атрибут, неизвестные узлы и объекты, на которые нет ссылок.
Читатель бросает "Неизвестный узел" и "Неизвестный атрибут" в этой строке:
<Transaction xmlns = "http://www.navicure.com/Transaction" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://www.navicure.com/Transaction Transaction.xsd">
Оба из них указывают на атрибут «xsi: schemaLocation», что кажется ошибочным. Никакие другие события не выбрасываются.
Мне не удалось заставить отладчик войти в логику десериализации, чтобы увидеть, что происходит, когда он добирается до этого элемента.
Любые предложения о том, как пролить свет на причину этой проблемы с десериализацией?
Убедитесь, что в классе свойство является общедоступным. частные свойства, чтобы они не сериализовались.
свойство является общедоступным - сгенерированный XSD.exe код сделал это правильно.
Я считаю, что нам нужно увидеть минимальный воспроизводимый пример, чтобы помочь вам. Например. вот пример успешной десериализации и повторной сериализации вашего XML: dotnetfiddle.net/OjfW2z





эта schemaLocation кажется недействительной ... должна ли там быть косая черта вместо пробела? Это то, что вы предоставляете вручную или в зависимости от стороннего кода?