Re[5]: MSXML
От: ak_alex Россия  
Дата: 22.08.02 09:55
Оценка: 18 (1)
Здравствуйте Odi$$ey, Вы писали:

O$>Здравствуйте ak_alex, Вы писали:


O$>а можно по подробнее? "эта дрянь" не только убирает encoding="WINDOWS-1251", но корежит русские буквы при сохранении

После того, как сделал загрузку из строки через loadXML, смотришь, есть ли processing instruction, если есть то заменяешь его своим, ну что-то типа:

      hr = doc->loadXML(bstrXML, &bSuccess);
      if (SUCCEEDED(hr)&&bSuccess) {
        CComPtr <IXMLDOMNode> instr;
        hr = doc->get_firstChild(&instr);
        if (SUCCEEDED(hr)) {
          DOMNodeType tp;
          instr->get_nodeType(&tp);
          if (tp==NODE_PROCESSING_INSTRUCTION) {
              CComPtr<IXMLDOMProcessingInstruction> pi = NULL;
              hr = instr->QueryInterface(__uuidof(IXMLDOMProcessingInstruction), (void**)&pi);
              if (SUCCEEDED(hr)) {
                CComBSTR instType(L"xml");
                CComBSTR instData(L"version=\"1.0\" encoding=\"WINDOWS-1251\"");
                CComPtr<IXMLDOMProcessingInstruction> ptrInstr;
                hr = doc->createProcessingInstruction(instType, instData,&ptrInstr);
                CComPtr<IXMLDOMNode> oldInstr;
                hr = doc->replaceChild(ptrInstr, instr, &oldInstr);

              }

          }
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.