Что такое нулевой атрибут XML и как с ним обращаться в Linq-To-XML? - PullRequest
0 голосов
/ 26 августа 2010

Я пытаюсь прочитать XmlReader в XDocument

//GetContentStructureReader() retrieves the reader from an external source
XmlReader reader = GetContentStructureReader();
XDocument.Load(reader);

Я получаю следующее исключение с одним конкретным источником данных:

Система.ArgumentNullException не было обработано кодом пользователя. Message = значение не может быть нулевым.Имя параметра: значение Source = System.Xml.Linq ParamName = значение StackTrace: в System.Xml.Linq.XAttribute..ctor (имя XName, значение объекта) в System.Xml.Linq.XContainer.ReadContentFrom (XmlReader r) в системе.Xml.Linq.XContainer.ReadContentFrom (XmlReader r, LoadOptions o) в System.Xml.Linq.XDocument.Load (читатель XmlReader, параметры LoadOptions) в System.Xml.Linq.XDocument.Load (читатель XmlReader)

Так что кажется, что во время загрузки в какой-то момент XAttribute инициализируется с нулевым значением.

Что такое нулевой атрибут в XML?Я попытался проверить исходный документ (6 мегабайт), чтобы исправить данные, но тщетно, поскольку я не знаю, какой тип XML-конструкции я ищу.

Есть ли обходной путь для этого?

1 Ответ

1 голос
/ 26 августа 2010

Во время загрузки документа нулевое значение не должно отображаться как значения для XAttribute.То, что вы видите, неожиданно.Вы можете остановиться на исключении в отладчике, чтобы увидеть стек вызовов и значения параметров (в частности, имя XName), которые могут помочь вам найти атрибут в исходном документе.(Вы также можете попробовать ((IXmlLineInfo) reader) в окне Whatch на одном из фреймов, для которого действительно определено средство чтения. В любом случае реализация XmlReader по умолчанию в .NET Framework никогда не должна вызывать этого.где / как вы создали экземпляр объекта XmlReader, передаваемого методу Load?

...