Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2015, 14:35   #1
sergei92
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 51
По умолчанию Перемещение узла

Подскажите пожалуйста есть XML документ нужно взять какой нибудь узел и переместить в другой документ в C++ Builder 6

Код:
<?xml version="1.0" encoding="utf-8"?>
<pricelist>
 
   <book id="1">
   <title>Книга 1</title>
   <author>Автор 1</author>
   <price>Цена 1</price>
   </book>
 
   <book id="2">
   <title>Книга 2</title>
   <author>Автор 2</author>
   <price>Цена 2</price>
   </book>
 
   <book id="3">
   <title>Книга 3</title>
   <author>Автор 3</author>
   <price>Цена 3</price>
   </book>
 
</pricelist>
Например мне нужно переместить узел <book id="2"> в другой XML
после перемещения новый XML должен выглядить так.


Код:
<?xml version="1.0" encoding="utf-8"?>
<pricelist>
 
   <book id="2">
   <title>Книга 2</title>
   <author>Автор 2</author>
   <price>Цена 2</price>
   </book> 
 
</pricelist>
За ранее большое спасибо!
sergei92 вне форума Ответить с цитированием
Старый 18.09.2015, 14:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

М.м.м... Ну как вариант:
Код:
TStringList xFrom,xTo;
xFrom.LoadFromFile("Откуда.xml");
int i=xFrom.IndexOf("<book id="2">");
if(i>=0) {
 xTo.Append("<?xml version="1.0" encoding="utf-8"?>");
 xTo.Append("<pricelist>");
 for(;xFrom[i]!="</book>";i++) xTo.Append(xFrom[i]);
 xTo.Append("</pricelist>");
 xTo.SaveToFile("Куда.xml");
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2015, 15:39   #3
sergei92
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 51
По умолчанию

Виталий , а как нибудь с помощью XMLDocumet можно переместить узел?
sergei92 вне форума Ответить с цитированием
Старый 18.09.2015, 16:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можно конечно, но я его никогда (почти) не использовал, поэтому увы не скажу как с его помошью это сделать. Кажется у него должны быть методы CreateNode.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2015, 13:39   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Надо открыть оба файла, считать нод из одного, проверить есть ли такой же нод во втором, если есть то удалить его, создать нод(если корневой раздел то
Код:
Doc->DocumentElement = Doc->CreateNode(NameNode,ntElement,L"");
где Doc это открытий файл TXMLDocument* Doc, если это дочерний узел то
Код:
_di_IXMLNode Node  = ParentElem->AddChild(NameNode);
где ParentElem - это _di_IXMLNode ParentElem, перенести значения из одного в другой, прочитав построчно.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 23.09.2015, 10:40   #6
sergei92
Пользователь
 
Регистрация: 17.07.2015
Сообщений: 51
По умолчанию

Krok27, а не могли бы Вы примерчик подкинуть. А то ничего не получается. Спасибо
sergei92 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление узла в XML Oleg_SS Общие вопросы Delphi 6 12.09.2014 05:54
C++(удаления узла) Xaceo Помощь студентам 1 28.03.2011 18:05
Ответ узла (ICMP) metoflex C/C++ Сетевое программирование 2 05.03.2011 00:39
Вделение узла в TTreeView nikmay Общие вопросы Delphi 2 11.08.2009 17:02