Какую версию MSXML я должен использовать?

В Codeigniter мы можем использовать как это легко понять.

$sql = "SELECT
            *
        FROM
            `Persons`
        WHERE
            LastName = 'Svendson'
        AND Age = '12'
        AND (
            FirstName = 'Tove'
            OR FirstName = 'Ola'
            OR Gender = 'M'
            OR Country = 'India'
        )";

$query = $this->db->query($sql);

return $query->result();
47
задан Community 23 May 2017 в 10:30
поделиться

5 ответов

Если вам нужно поддерживать версии ОС Windows до Win2k, используйте MSXML3. В противном случае используйте MSXML6.

MSXML4 находится в режиме обслуживания.
MSXML5 никогда не поддерживался для использования вне MS-Office.

См .:

24
ответ дан 26 November 2019 в 19:56
поделиться

Мне пришлось принять такое же решение в своей работе пару лет назад.

MSDN утверждает , что версия 6 является оптимальной для использования, однако они не предоставляйте модули слияния в SDK, и вам не разрешено распространять их в своем приложении, как в версии 4. Версия 4 была заменена версией 6, а версия 5 была специально для MS Office. Версия 3 остается целевой версией на старых машинах.

В итоге я применил подход постепенной деградации и попытался сначала использовать 6, потерпел неудачу в этой версии 4, а затем не смог использовать версию 3 (код - C ++):

inline bool CXMLDocument::CreateXMLDOMFactory(void)
{
    wxMutexLocker lock(sm_mXMLDOMFactory);

    if(!sm_pXMLDOMFactory)
    {
        ::CoGetClassObject(CLSID_DOMDocument60, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory));
        if(!sm_pXMLDOMFactory)
        {
            ::CoGetClassObject(CLSID_DOMDocument40, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory));
            if(!sm_pXMLDOMFactory)
                ::CoGetClassObject(CLSID_DOMDocument30, CLSCTX_ALL, 0, IID_IClassFactory, reinterpret_cast<void **>(&sm_pXMLDOMFactory));
        }
    }

    return sm_pXMLDOMFactory != 0;
}

Мы заметили заметные улучшения производительности после перехода на версию 6 с версии 4, хотя вам нужно явно установить свойство NewParser в документе, чтобы получить это преимущество, например:

pDocument->setProperty(_bstr_t(L"NewParser"), VARIANT_TRUE);

При загрузке документов возникла еще пара проблем, связанных с соображениями безопасности, удаленными DTD и т. Д. Опять же, это было сделано через свойства в документе, поэтому стоит поискать свойства ProhibitDTD , UseInlineSchema , AllowXsltScript и ServerHTTPRequest . в MSDN, чтобы узнать, применимы ли они к вашему использованию.

12
ответ дан 26 November 2019 в 19:56
поделиться

Вот список всех версий . В Википедии есть достойное обсуждение различий .

2
ответ дан 26 November 2019 в 19:56
поделиться

Я недавно создал библиотека JS, которая пыталась изящно перейти от последней версии к самой старой. Я обнаружил, что MSXML 3.0 очень хорошо поддерживается в большинстве систем. Я хотел использовать версию 6.0, когда она будет доступна, но она сломалась на некоторых установках IE 8. Итак, мне пришлось изменить свой код, чтобы сначала попробовать версию 3.0, затем 6.0, а затем 2.0.

0
ответ дан 26 November 2019 в 19:56
поделиться

Похоже, что MSXML 5 - единственная версия, которая может подписывать XML цифровой подписью. Сайт MS говорит, что даже MSXML 6 не может этого сделать, поэтому, если вам нужна эта функция, кажется, что MSXML 5 - единственный выход.

http://msdn.microsoft.com/en-us/library/ms761363 (VS.85) .aspx «В этом примере кода используются функции, которые были реализованы в MSXML 5.0 для приложений Microsoft Office. Цифровые подписи XML не поддерживаются в MXSML 6.0 и более поздних версиях "

1
ответ дан 26 November 2019 в 19:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: