IXMLDOMNode::text
От: plads_project  
Дата: 18.11.02 12:09
Оценка:
Я впервые использую MSXML Parser и у меня возник вот такой дурацкий вопрос. Подскажите.
Есть файл xml: <bparse>ABCD<struct>efgh</struct></bparse>
И есть такая программа:
#import <msxml3.dll>
using namespace MSXML2;
#include <stdio.h>
main()
{
    CoInitialize(0);
    IXMLDOMDocumentPtr xml_doc;
    if (0==xml_doc && FAILED(xml_doc.CreateInstance(__uuidof(MSXML2::DOMDocument))))
    {
        return 0;
    }
    if (!xml_doc->load("test.xml"))
    {
        return 0;
    }
    IXMLDOMNodeListPtr list=xml_doc->childNodes;
    for (int i=0; i<list->length; i++)
    {
        IXMLDOMNodePtr n=list->item[i];
        printf("%s\n", n->text.operator const char *());
    }
    printf("OK\n");
}


Эта программа выводит "ABCDefgh", т.е. содержимое узла и узла, который в него вложен. А мне нужно получить только "ABCD". Как это сделать?
Re: IXMLDOMNode::text
От: Lloyd Россия  
Дата: 18.11.02 12:16
Оценка:
Здравствуйте, plads_project, Вы писали:

Вместо
for (int i=0; i<list->length; i++)
{
    IXMLDOMNodePtr n=list->item[i];
    printf("%s\n", n->text.operator const char *());
}


попробуйте

IXMLDOMNodePtr n=list->item[0];
printf("%s\n", n->text.operator const char *());
Re[2]: IXMLDOMNode::text
От: plads_project  
Дата: 18.11.02 12:31
Оценка:
Не работает. Но идею я понял . Чтобы получить "ABCD", надо извлекать дочерние элементы узла.
Re: IXMLDOMNode::text
От: kat  
Дата: 19.12.02 11:24
Оценка:
Попробуйте вместо IXMLDOMNode::text (текстовое представление элемента и всех его дочерних элементов) использовать IXMLDOMNode::nodeValue (значение собственно элемента).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.