Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Динамическое создание TXMLDocument


Автор: Igor84 30.10.2010, 11:40
Здравствуйте! Пытаюсь открыть XML:
Код

      TXMLDocument *XMLDoc = new TXMLDocument(NULL);
      XMLDoc->Active=true;
      XMLDoc->DOMVendor=GetDOMVendor("MSXML");
      XMLDoc->NodeIndentStr="<2 spaces>";
      XMLDoc->Name="XMLDoc1";
      XMLDoc->Options <<doNodeAutoCreate <<doAttrNull <<doAutoPrefix <<doNamespaceDecl;
      XMLDoc->LoadFromFile(ExtractFilePath(Application->ExeName)+"XMLDoc.xml");

Всё получается... и теперь хочу добавить несколько узлов:
Код

      _di_IXMLNode j;
      j = XMLDoc->ChildNodes->FindNode("Node")->AddChild("Child");//находим корневую ветку
      j->ChildValues["value_1"]="2010";
      j->ChildValues["value_2"]="2011";
      XMLDoc->SaveToFile(ExtractFilePath(Application->ExeName)+"XMLDoc.xml");
      XMLDoc->Active=false;
      delete XMLDoc;

В ответ - raised exception class EInvalidPointer with message 'Invalid pointer operation'.
Но если положить на форму компонент TXMLDocument и внести соответствующие изменения в код (т.е. отказаться от динамического создания), то всё работает.
На каком-то форуме нашел запись, что нельзя динамически создавать XMLDocument, мол есть такой баг. Вопрос - насколько это верно и если нет, каковы пути решения? 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)