Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление дочерненго элемента в XML(C#) 
:(
    Опции темы
DimKon
Дата 17.8.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 26.6.2009

Репутация: нет
Всего: нет



Помогите разобраться с проблемой, пожалуйста.
Загружаю данные и БД в список, затем формирую дерево XML:
Код

 XElement xAuthors =
                new XElement("Издательства_авторы",
                    new XElement("Автор", dbXML.userAuthors.Where(c => c.Type == "Автор")
                                                           .Select(c =>
                                                               new XElement("Автор",
                                                                   new XAttribute("Type", c.Type),
                                                                   new XElement("Au_ID", c.Au_ID),
                                                                   new XElement("Имя", c.FirstName),
                                                                   new XElement("Фамилия", c.SecondName),
                                                                   new XElement("Год_рождения", c.Year)))),
                    new XElement("Группа_авторов", dbXML.userAuthors.Where(c => c.Type == "Группа авторов")
                                                                   .Select(c =>
                                                                       new XElement("Группа_авторов",
                                                                           new XComment("Не автор"),
                                                                           new XAttribute("Type", c.Type),
                                                                           new XElement("Au_ID", c.Au_ID),
                                                                           new XElement("Имя", c.FirstName)))));


Затем пытаюсь добавить в коне новый дочерний узел
Код

Authors A = new Authors(TYPE,AU_ID,FIRSTNAME); 
 xDoc.Element("Группа_авторов").Add(
                new XElement("Группа_авторов",
                    new XComment("Не автор"),
                    new XAttribute("Type", A.TYPE),
                    new XElement("Au_ID", A.AU_ID),
                    new XElement("Имя", A.FIRSTNAME)));


Выдает исключение NillReferenceExeption -"в экземпляре объекта не задана ссылка на объект"
С чем это связано, подскажите?

То же прослеживается, если я пытаюсь сделать следующее:
Код

XElement xElenent = 
                new XElement("BookParts",
                    new XElement("BookPart",
                        new XAttribute("type", "author"),
                        new XElement("firstName", "Joe"),
                        new XElement("lastName", "Rattz")));
            Console.WriteLine(xElenent);
            //Добавление узла в конец списка дочерних узлов
            xElenent.Element("BookParts").Add(
                new XElement("BookPart",
                    new XAttribute("type","editor"),
                    new XElement("firstName", "Jep"),
                    new XElement("lastName", "Buck"));
            Console.WriteLine(xElenent);




PM MAIL   Вверх
WarHog
Дата 25.8.2009, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: 1
Всего: 2



Привет, DimKon
NullReference выбрасывается из-за того, что ты пытаешься искать в рутовом элементе рутовый же элемент, а не дочерний, т.е. для последнего фрагмента
Код

xElenent.Element("BookParts")

ты пытаешься найти в BookParts сам BookParts. Он не находится, возвращается null и  при попытке сделать Add выбрасывается исключение. Сделай т.о.:
Код

xElement.Add(
                new XElement("BookPart",
                    new XAttribute("type", "editor"),
                    new XElement("firstName", "Jep"),
                    new XElement("lastName", "Buck")));

или
Код

XElement findElement = xElement.Element("BookPart");
            if (findElement != null)
                findElement.Parent.Add(
                        new XElement("BookPart",
                            new XAttribute("type", "editor"),
                            new XElement("firstName", "Jep"),
                            new XElement("lastName", "Buck")));

--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема »


 




[ Время генерации скрипта: 0.0838 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.