49

SOで見つけることができませんでしたが、これはよくある質問のようです。

アプリケーションで使用する必要がある MSXML のバージョンは?

MSXML3、4、5、6 があります。

最近、 MSXML v4 を使用するコードをcalling-wcf-service-by-vbscriptに投稿しました。AnthonyWJones は、私は 4 を使うべきではなく、代わりに 3 または 6 を使うべきだと投稿しましたが、おそらく 3 です。

なんで?アプリで使用する MSXML のバージョンを選択する基準について詳しく知りたいです。

おまけの質問: MSXML のさまざまなバージョン間の相違点の概要を知っている人はいますか?


これまでのまとめ:

  • MSXML6
    を最初に選択する必要があります。2006 年にリリースされ、パフォーマンスとコンプライアンスの修正が含まれています。できればこれを使ってください。それは良いです。マージ モジュールはありません。MSXML6 ランタイムをアプリにバンドルするには、MSXML6 msi ファイルをパッケージ化することをお勧めします。MSXML6 は MSXML3/4 からのアップグレードですが、一部の機能が廃止されるため、MSXML3/4 を置き換えるものではありません。MSIはこちらから入手できます。
  • MSXML3
    2 番目の選択肢。最も広く展開されているバージョン。当初は 2000 年 3 月に出荷されました。積極的にメンテナンスされており、新機能はありません。SP5 (2005 年出荷) 以降を使用している場合は、現在サポートされています。SP7が最新です (これも 2005 年から)。
  • MSXML5
    は、MS-Office の一部としてのみリリースされました。現在 Microsoft によってサポートされていますが、アプリの構築用ではなく、Office の一部としてのみサポートされています。MSXML5: Verboten に依存するアプリをビルドしないでください。
  • MSXML4
    は最初に出荷されましたか? 現在「メンテナンスモード」です。Microsoft は、MSXML4 から MSXML6 に移行することを人々に奨励しています。2003 年に出荷された MSXML4SP2 以降を使用している場合は、現在サポートされています。MSXML4SP2はこちらからダウンロードしてください。 再配布可能です

Internet Explorer で適切なバージョンの MSXML を使用することは、Microsoft の xmlteam のブログの良いエントリです。

4

5 に答える 5

25

Win2k より前の Windows OS バージョンをサポートする必要がある場合は、MSXML3 を使用してください。それ以外の場合は、MSXML6 を使用してください。

MSXML4 はメンテナンス モードです。
MSXML5 は、MS-Office 以外での使用が実際にサポートされることはありませんでした。

見る:

于 2009-06-04T17:02:20.467 に答える
13

数年前、私は自分の仕事で同じ決定を下さなければなりませんでした。

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;
}

バージョン 4 からバージョン 6 に移行した後、測定可能なパフォーマンスの改善が見られましたNewParserが、この利点を得るには、ドキュメントにプロパティを明示的に設定する必要があります。

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

また、セキュリティ上の考慮事項やリモート DTD などのために、ドキュメントをロードする際に飛び越えなければならないフープがいくつかありました。繰り返しますが、これはドキュメントのプロパティを介して行われたため、MSDN でProhibitDTDUseInlineSchemaAllowXsltScriptおよびServerHTTPRequestプロパティを調べて、それらが使用法に当てはまるかどうかを確認する価値があります。

于 2009-06-04T17:10:31.393 に答える
2

MSXML 5 は、XML にデジタル署名できる唯一のバージョンのようです。MS サイトには、MSXML 6 でもできないと書かれています。この機能が必要な場合は、MSXML 5 が唯一の方法のようです。

http://msdn.microsoft.com/en-us/library/ms761363(VS.85).aspx " このサンプル コードでは、Microsoft Office アプリケーション用に MSXML 5.0 で実装された機能を使用しています。XML デジタル署名は MXSML 6.0 ではサポートされていません。そしてその後

于 2010-03-22T17:10:03.817 に答える
2

すべてのバージョンのリストは次のとおりですウィキペディアには、違いに関するまともな議論があります。

于 2009-06-04T17:05:16.347 に答える
0

私は最近、最新バージョンから最も古いバージョンへと優雅に劣化しようとする JS ライブラリを作成しました。MSXML 3.0 は、ほとんどのシステムで非常によくサポートされていることがわかりました。v. 6.0 が利用可能になったら使用したかったのですが、一部の IE 8 インストールで機能しなくなりました。そのため、最初に v 3.0、次に v 6.0、次に v 2.0 を試すようにコードを変更する必要がありました。

于 2009-06-04T17:04:59.637 に答える