Здравствуйте Alfarn, Вы писали:
A>Народ, помогите пожалуйста с проблеммой, A>как создать на C++ пустой документ с корневым узлом?
A>В итоге нужно получить примерно следующее: A><?xml version="1.0"?> A><xmldata> A></xmldata>
Здравствуйте 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" );
Здравствуйте Аноним, Вы писали:
А>Здравствуйте 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" ) ) );
Здравствуйте Аноним, Вы писали:
А>Кусок из моего проекта (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...
[skip]
S>>Попробовал я сделать как ты предлагал — корень создался — а вот надписи S>><?xml version="1.0"?> S>>
А>А ты файл сохранил потом? Попробуй при помощи save...
да естественно — сохранил...
CComPtr<IXMLDOMDocument> data;
HRESULT hr = data.CoCreateInstance(__uuidof(DOMDocument));
[все такое — создание и прочее...]
data->save(CComVariant(L"pact1.xml"));