MSXML - сохранение с отступами - 1
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 09.07.02 04:41
Оценка: 17 (3)
#Имя: FAQ.xml.indent1
Здравствуйте Slayer, Вы писали:

O$>>Можно ли заставить MSXML парсер сохранять документы в структурированном виде? У меня шарошит весь файл в одну строку

S>Не раз уже такой вопрос возникал — и ни разу я ответа не видел . Нельзя вроде бы это сделать с помощью парсера... Ручками надобно чего-нить дописывать...


спасибо Илье, подсказал еще одну штуку — http://groups.google.ca/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=38F675F48B36D4118E4D00508B5EBA3761554A%40cpmsftmsgv21.microsoft.com&rnum=1&prev=/groups%3Fq%3DMSXML%2Bsave%2BCR%26hl%3Den%26lr%3D%26ie%3DUTF-8%26oe%3DUTF-8%26selm%3D38F675F48B36D4118E4D00508B5EBA3761554A%2540cpmsftmsgv21.microsoft.com%26rnum%3D1
действительно то что дохтур прописал, на VB выглядит вообще смешно


    'oXML - IXMLDOMDocument
    'sXML - строка
    sXML = oXML.XML
    oXML.loadXML(Replace(sXML, "><", ">" & vbCrLf & "<"))


на C++ строк поболее, но смысл тот же, надругаться перед сохранением:

        CComBSTR bstrXML( L"" );
        hr = spDomDocument->get_xml( &bstrXML ); // CComPtr<IXMLDOMDocument> spDomDocument;

        // вставляем переводы строки
        CString sXml = W2A( bstrXML );
        sXml.Replace( "><", ">\n<" );
        bstrXML = sXml.GetBuffer( 0 );

        // загружаем взад
        hr = spDomDocument->loadXML( bstrXML, &bSuccess );

        // сохраняем файлы
        hr = spDomDocument->save( CComVariant( L"file.xml") );


получается чудненько структурированный документ со всеми отступами.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.