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


Автор: Aline 26.4.2006, 09:50
Всем привет!
Здесь на форуме я не нашла ответа на вопрос о том, как с "нуля" создать программно xml -документ. Но проблема всё-таки решилась и я хочу поделиться опытом, может кому то помогу этим.
Вот небольшой кусок из программы:

 _di_IXMLDocument xmlDocument = NewXMLDocument();
      xmlDocument->Active = true;
      xmlDocument->Encoding = "windows-1251";
      xmlDocument->Options = xmlDocument->Options << doNodeAutoIndent;
      IXMLNode* parentNode = xmlDocument->AddChild("Chapter");
      parentNode->SetAttribute(WideString("xmlns:xsi"),(AnsiString)"http://www.w3.org/2001/XMLSchema-instance");
      parentNode->SetAttribute(WideString("xsi:noNamespaceSchemaLocation"),(AnsiString)"Proba.xsd");
      _di_IXMLNode Section = parentNode->AddChild(WideString("Section"));
      Section->SetAttribute("DataSet", (AnsiString)"DataSet");
      _di_IXMLNode Signals = Section->AddChild("Signals");
      _di_IXMLNode Capt = Signals->AddChild("Caption");
      Capt->Text = "Сигнал1";
      xmlDocument->SaveToFile("proba1.xml");

А вот что в результате этого получается:

<?xml version="1.0" encoding="windows-1251"?>
<Chapter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Proba.xsd">
  <Section DataSet="DataSet">
    <Signals>
      <Caption>Сигнал1</Caption>
    </Signals>
  </Section>
</Chapter>
 

Автор: ksili 17.8.2007, 12:10
Пример работает, но у меня возник один вопрос. Мне нужно указать рамещение декларации типа XML-документа (DTD - document type definition). Выглядит это так:
Код

<!DOCTYPE package PUBLIC "-//e-port//Eport Diler Message protocol 1.0.//EN" "http://dtd.e-port.ru/request.10.dtd">

Это должно располагаться сразу после 
Код

<?xml version="1.0" encoding="windows-1251"?>

Но до первого узла. То есть сама эта запись узлом не является и при помощи _di_IXMLNode её добавлять, как я понимаю, нельзя. Какой код нужно добавить, чтобы в XML-файле появилась эта запись? Что-то я не нашёл подходящего параметра у компонента _di_IXMLDocument. 

Вообще, первый день с XML разбираюсь.

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