Как создать корневой узел?
От: Alfarn  
Дата: 22.10.02 08:07
Оценка:
Народ, помогите пожалуйста с проблеммой,
как создать на C++ пустой документ с корневым узлом?

В итоге нужно получить примерно следующее:
<?xml version="1.0"?>
<xmldata>
</xmldata>
Легкий путь открывается лишь тому, кто по трудному пути прошел.
Re: Как создать корневой узел?
От: Nikto Россия  
Дата: 22.10.02 08:16
Оценка: 3 (1)
Здравствуйте Alfarn, Вы писали:

A>Народ, помогите пожалуйста с проблеммой,

A>как создать на C++ пустой документ с корневым узлом?

A>В итоге нужно получить примерно следующее:

A><?xml version="1.0"?>
A><xmldata>
A></xmldata>

так не пойдет?


IXMLDocument* doc;
CreateInstance...;
doc->loadXML("<?xml version=\"1.0\"?><xmldata></xmldata>");
Re: Как создать корневой узел?
От: Ursus Россия  
Дата: 22.10.02 08:29
Оценка:
Здравствуйте Alfarn, Вы писали:

A>Народ, помогите пожалуйста с проблеммой,

A>как создать на C++ пустой документ с корневым узлом?

A>В итоге нужно получить примерно следующее:

A><?xml version="1.0"?>
A><xmldata>
A></xmldata>

Как вариант испольовать loadXML
Да пребудет с тобой Великий Джа
Re: Как создать корневой узел?
От: Аноним  
Дата: 08.11.02 07:21
Оценка:
Здравствуйте Alfarn, Вы писали:

A>Народ, помогите пожалуйста с проблеммой,

A>как создать на C++ пустой документ с корневым узлом?

A>В итоге нужно получить примерно следующее:

A><?xml version="1.0"?>
A><xmldata>
A></xmldata>

Кусок из моего проекта (term_echo просто выдают сообщения на отладочную консоль):

// Если в документе ещё нет узлов, то инициализируем документ.
::m_pLogEdit->term_echo( "It's need to initialize an XML document...\r\n" );
pXMLDoc.CreateInstance( "Msxml.DOMDocument" );
// Создаём инструкцию обработки.
::m_pLogEdit->term_echo( "Try to create processing instruction...\r\n" );
MSXML::IXMLDOMProcessingInstructionPtr pProcessingInstruction = NULL;
pProcessingInstruction = pXMLDoc->createProcessingInstruction( "xml", "version='1.0'" );
// Записываем её в дерево.
::m_pLogEdit->term_echo( "Try to insert it in the XML tree...\r\n" );
_variant_t vNullVal;
vNullVal.vt = VT_NULL;
pXMLDoc->insertBefore(pProcessingInstruction, vNullVal);
::m_pLogEdit->term_echo( "Ok.\r\n" );
// Теперь необходимо создать корневой элемент.
::m_pLogEdit->term_echo( "Try to create root element...\r\n" );
_variant_t varNodeType( ( short ) MSXML::NODE_ELEMENT);
MSXML::IXMLDOMNodePtr pRootNode= NULL;
_variant_t varNT( ( short ) MSXML::NODE_ELEMENT );
pRootNode = pXMLDoc->createElement( _T( "Book" ) );
pXMLDoc->appendChild(pRootNode);
::m_pLogEdit->term_echo( "Ok.\r\n" );
// Фиксируем тот факт, что документ был обновлён.
SetModifiedFlag();
::m_pLogEdit->term_echo( "Ok.\r\n" );
::m_pLogEdit->term_echo( "Try to create a new chapter...\r\n" );
MSXML::IXMLDOMNodePtr pRecNode= NULL;
pRecNode = pRootNode->appendChild( pXMLDoc->createElement( _T( "Chapter" ) ) );
::m_pLogEdit->term_echo( "Ok.\r\n" );

Может, поможет...
Re[2]: Как создать корневой узел?
От: shrek  
Дата: 13.11.02 18:35
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Alfarn, Вы писали:


A>>Народ, помогите пожалуйста с проблеммой,

A>>как создать на C++ пустой документ с корневым узлом?

A>>В итоге нужно получить примерно следующее:

A>><?xml version="1.0"?>
A>><xmldata>
A>></xmldata>

А>Кусок из моего проекта (term_echo просто выдают сообщения на отладочную консоль):


А>// Если в документе ещё нет узлов, то инициализируем документ.

А> pXMLDoc.CreateInstance( "Msxml.DOMDocument" );
А>// Создаём инструкцию обработки.
А> MSXML::IXMLDOMProcessingInstructionPtr pProcessingInstruction = NULL;
А> pProcessingInstruction = pXMLDoc->createProcessingInstruction( "xml", "version='1.0'" );
А>// Записываем её в дерево.
А> _variant_t vNullVal;
А> vNullVal.vt = VT_NULL;
А> pXMLDoc->insertBefore(pProcessingInstruction, vNullVal);
А>// Теперь необходимо создать корневой элемент.
А> ::m_pLogEdit->term_echo( "Try to create root element...\r\n" );
А> _variant_t varNodeType( ( short ) MSXML::NODE_ELEMENT);
слушай, а зачем пред строка?^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
— ниже еще есть подобная
А> MSXML::IXMLDOMNodePtr pRootNode= NULL;
А> _variant_t varNT( ( short ) MSXML::NODE_ELEMENT );
А> pRootNode = pXMLDoc->createElement( _T( "Book" ) );
А> pXMLDoc->appendChild(pRootNode);
А>// Фиксируем тот факт, что документ был обновлён.
А> SetModifiedFlag();
А> MSXML::IXMLDOMNodePtr pRecNode= NULL;
А> pRecNode = pRootNode->appendChild( pXMLDoc->createElement( _T( "Chapter" ) ) );
Re[2]: Как создать корневой узел?
От: shrek  
Дата: 13.11.02 18:43
Оценка:
Здравствуйте Аноним, Вы писали:

А>Кусок из моего проекта (term_echo просто выдают сообщения на отладочную консоль):


А>// Если в документе ещё нет узлов, то инициализируем документ.

А> ::m_pLogEdit->term_echo( "It's need to initialize an XML document...\r\n" );
А> pXMLDoc.CreateInstance( "Msxml.DOMDocument" );
А>// Создаём инструкцию обработки.
А> ::m_pLogEdit->term_echo( "Try to create processing instruction...\r\n" );
А> MSXML::IXMLDOMProcessingInstructionPtr pProcessingInstruction = NULL;
А> pProcessingInstruction = pXMLDoc->createProcessingInstruction( "xml", "version='1.0'" );
А>// Записываем её в дерево.
А> ::m_pLogEdit->term_echo( "Try to insert it in the XML tree...\r\n" );
А> _variant_t vNullVal;
А> vNullVal.vt = VT_NULL;
А> pXMLDoc->insertBefore(pProcessingInstruction, vNullVal);
А> ::m_pLogEdit->term_echo( "Ok.\r\n" );
А>// Теперь необходимо создать корневой элемент.
А> ::m_pLogEdit->term_echo( "Try to create root element...\r\n" );
А> _variant_t varNodeType( ( short ) MSXML::NODE_ELEMENT);
А> MSXML::IXMLDOMNodePtr pRootNode= NULL;
А> _variant_t varNT( ( short ) MSXML::NODE_ELEMENT );
А> pRootNode = pXMLDoc->createElement( _T( "Book" ) );
А> pXMLDoc->appendChild(pRootNode);
А> ::m_pLogEdit->term_echo( "Ok.\r\n" );
А>// Фиксируем тот факт, что документ был обновлён.
А> SetModifiedFlag();
А> ::m_pLogEdit->term_echo( "Ok.\r\n" );
А> ::m_pLogEdit->term_echo( "Try to create a new chapter...\r\n" );
А> MSXML::IXMLDOMNodePtr pRecNode= NULL;
А> pRecNode = pRootNode->appendChild( pXMLDoc->createElement( _T( "Chapter" ) ) );
А> ::m_pLogEdit->term_echo( "Ok.\r\n" );

Попробовал я сделать как ты предлагал — корень создался — а вот надписи
<?xml version="1.0"?>
Re[3]: Как создать корневой узел?
От: Аноним  
Дата: 14.11.02 08:22
Оценка:
Здравствуйте shrek, Вы писали:

S>Здравствуйте Аноним, Вы писали:


А>>Кусок из моего проекта (term_echo просто выдают сообщения на отладочную консоль):


А>>// Если в документе ещё нет узлов, то инициализируем документ.

А>> ::m_pLogEdit->term_echo( "It's need to initialize an XML document...\r\n" );
А>> pXMLDoc.CreateInstance( "Msxml.DOMDocument" );
А>>// Создаём инструкцию обработки.
А>> ::m_pLogEdit->term_echo( "Try to create processing instruction...\r\n" );
А>> MSXML::IXMLDOMProcessingInstructionPtr pProcessingInstruction = NULL;
А>> pProcessingInstruction = pXMLDoc->createProcessingInstruction( "xml", "version='1.0'" );
А>>// Записываем её в дерево.
А>> ::m_pLogEdit->term_echo( "Try to insert it in the XML tree...\r\n" );
А>> _variant_t vNullVal;
А>> vNullVal.vt = VT_NULL;
А>> pXMLDoc->insertBefore(pProcessingInstruction, vNullVal);
А>> ::m_pLogEdit->term_echo( "Ok.\r\n" );
А>>// Теперь необходимо создать корневой элемент.
А>> ::m_pLogEdit->term_echo( "Try to create root element...\r\n" );
А>> _variant_t varNodeType( ( short ) MSXML::NODE_ELEMENT);
А>> MSXML::IXMLDOMNodePtr pRootNode= NULL;
А>> _variant_t varNT( ( short ) MSXML::NODE_ELEMENT );
А>> pRootNode = pXMLDoc->createElement( _T( "Book" ) );
А>> pXMLDoc->appendChild(pRootNode);
А>> ::m_pLogEdit->term_echo( "Ok.\r\n" );
А>>// Фиксируем тот факт, что документ был обновлён.
А>> SetModifiedFlag();
А>> ::m_pLogEdit->term_echo( "Ok.\r\n" );
А>> ::m_pLogEdit->term_echo( "Try to create a new chapter...\r\n" );
А>> MSXML::IXMLDOMNodePtr pRecNode= NULL;
А>> pRecNode = pRootNode->appendChild( pXMLDoc->createElement( _T( "Chapter" ) ) );
А>> ::m_pLogEdit->term_echo( "Ok.\r\n" );

S>Попробовал я сделать как ты предлагал — корень создался — а вот надписи

S><?xml version="1.0"?>
S>

А ты файл сохранил потом? Попробуй при помощи save...
Re[4]: Как создать корневой узел?
От: shrek  
Дата: 14.11.02 08:29
Оценка:
[skip]

S>>Попробовал я сделать как ты предлагал — корень создался — а вот надписи

S>><?xml version="1.0"?>
S>>

А>А ты файл сохранил потом? Попробуй при помощи save...

да естественно — сохранил...

CComPtr<IXMLDOMDocument> data;
HRESULT hr = data.CoCreateInstance(__uuidof(DOMDocument));
[все такое — создание и прочее...]

data->save(CComVariant(L"pact1.xml"));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.