Xml

Язык C#: программирование на C#, портирование кода C# на VB и VB на C#.

Модератор: Ramzes

kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Xml

Сообщение kuller » 01.05.2008 (Чт) 16:09

Подскажите как добавить узел в ХМЛ файл вот такой конфигурации:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<Pictures>

<Picture>
<Name>001.jpg</Name>
<Descr> Klassnaya Pogoda </Descr>
</Picture>

<Picture>
<Name>002.jpg</Name>
<Descr> Prekrasniy den </Descr>
</Picture>

</Pictures>


мне нужно добавить в этот файл имя новой картинки и соответственно комментарий к ней.

Заранее благодарен!!!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.05.2008 (Пт) 9:48


kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Сообщение kuller » 02.05.2008 (Пт) 11:18

Ramzes
Вот я сделал вот такой код:
Код: Выделить всё
XmlDocument xml = new XmlDocument();
xml.Load(@"1.xml");
XmlNode root = xml.DocumentElement;
XmlElement elem1 = xml.CreateElement("Name");
elem1.InnerText = "003.jpg";
root.AppendChild(elem1);
XmlElement elem2 = xml.CreateElement("Descr");
elem2.InnerText = "Vrodebi poluchaetsya";
root.AppendChild(elem2);
xml.Save(@"1.xml");

ну так вот он короче добавляет вот что:
Код: Выделить всё
<Name>003.jpg</Name>
  <Descr>Vrodebi poluchaetsya</Descr>

А мне надо чтобы он добавлял вот что:
Код: Выделить всё
<Picture>
  <Name>003.jpg</Name>
  <Descr>Vrodebi poluchaetsya</Descr>
</Picture>

Блин и никак не могу сделать это ... помоги пожалуйста!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.05.2008 (Пт) 11:23

а тебе не кажется, что сначала нужно добавить ветку picture? а затем в нее добавлять все остальное, а ты же все ветки добавляешь в корень

kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Сообщение kuller » 02.05.2008 (Пт) 11:32

Ramzes
Я знаю что мне ее нужно добавить ... в том то и дело что неполучается ее добавить, я вот что делал:
Код: Выделить всё
XmlDocument xml = new XmlDocument();
            xml.Load(@"1.xml");
            XmlNode root = xml.DocumentElement;
            XmlElement elem = xml.CreateElement("Picture");
            XmlElement elem1 = xml.CreateElement("Name");
            elem1.InnerText = "003.jpg";
            root.AppendChild(elem1);
            XmlElement elem2 = xml.CreateElement("Descr");
            elem2.InnerText = "Vrodebi poluchaetsya";
            root.AppendChild(elem2);
            root.AppendChild(elem);
            xml.Save(@"1.xml");
            label1.Text = xml.InnerText;

Вот так вот он Name и Descr добавляет а вот далее с Picture вот что происходит:
Код: Выделить всё
<Name>003.jpg</Name>
  <Descr>Vrodebi poluchaetsya</Descr>
  <Picture />

вот я и решил спросить потому что я уверен что что-то я нетак делаю

Atoman
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 109
Зарегистрирован: 01.02.2008 (Пт) 6:36

Сообщение Atoman » 02.05.2008 (Пт) 12:14

Код: Выделить всё
      XmlDocument Xml = new XmlDocument();
      XmlNode XmlRootNode = null;
      XmlNode XmlNode1 = null;
      XmlNode XmlNode2 = null;
      XmlElement XmlElem = null;

      Xml.LoadXml("<Pictures></Pictures>");
      XmlElem = Xml.DocumentElement;
      XmlRootNode = Xml.CreateNode(XmlNodeType.Element, "Picture", "");
      XmlElem.AppendChild(XmlRootNode);

      XmlNode1 = Xml.CreateNode(XmlNodeType.Element, "Name", "");
      XmlNode1.InnerText = "001.jpg";
      XmlRootNode.AppendChild(XmlNode1);

      XmlNode2 = Xml.CreateNode(XmlNodeType.Element, "Descr", "");
      XmlNode2.InnerText = "Klassnaya Pogoda";
      XmlRootNode.AppendChild(XmlNode2);

      Xml.Save("test.xml");


Код: Выделить всё
<Pictures>
  <Picture>
    <Name>001.jpg</Name>
    <Descr>Klassnaya Pogoda</Descr>
  </Picture>
</Pictures>


Вот это вроде то что тебе надо.

kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Сообщение kuller » 02.05.2008 (Пт) 12:19

Atoman
Да спасибо оно делает ПРАКТИЧЕСКИ то что мне надо ...... НО вот проблема в том что он таким методом записи при добавлении нового узла ЗАТИРАЕТ старый .... а мне надо так чтобы при добавлении нового старый не сатирался т.е. вот что :
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<Pictures>
  <Picture>
    <Name>001.jpg</Name>
    <Descr> Klassnaya Pogoda </Descr>
  </Picture>
  <Picture>
    <Name>002.jpg</Name>
    <Descr> Prekrasniy den </Descr>
  </Picture>
    <Picture>
    <Name>1111111</Name>
    <Descr>2222222222222222222</Descr>
  </Picture>
</Pictures>

kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Сообщение kuller » 02.05.2008 (Пт) 12:38

Atoman и Ramzes БОЛЬШОЕ СПАСИБО ВАМ ... я уже разобрался как записать так как мне надо)))
Если не трудно моглибы дать ссылку на какую-нибудь статейку по XPath ну т.е. мне теперь надо научиться ИСКАТЬ в нем по заданному имени картинки КОММЕНТАРИЙ к ней и выводить его!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 02.05.2008 (Пт) 16:56


kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Сообщение kuller » 02.05.2008 (Пт) 17:34

Так вобщем с поиском и выводом я уже тоже разобрался)))))))
Теперь у меня вот такой вопрос:
возможноли вот что:
нашел я к примеру список тех узлов которе мне нужно удалть ну вот затем КАК можно сделать так чтобы допустим в цикле foreach идя по списку найденных узлов УДАЛЯТЬ их?Я идиот! Убейте меня, кто-нибудь!??
Вот такой целый узел:
Код: Выделить всё
<Picture>
    <Name>004.jpg</Name>
    <Descr>XAXAXAXAXAXA</Descr>
  </Picture>

Возможно это и если да то какие методы надо разобрать мне для этого????

kuller
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.05.2008 (Чт) 16:05

Сообщение kuller » 02.05.2008 (Пт) 17:51

Все ВСЕМ БОЛЬШОЕ СПАСИБО .... Я уже разобрался сам с удалением)))


Вернуться в C#

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList