問題タブ [msxml6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
msxml - MsXml6.dll へのアップグレード
アプリケーションの Microsoft XML コアを msxml3.dll から msxml6.dll にアップグレードする際に問題が発生しました。msxml6 ヘッダーとライブラリ ファイルを指すように、vcproj と私のヘッダー ファイルを変更しました。また、msxml6 のクラス ID を変更して、CoCreateVariant() 関数を使用してドキュメント praser を作成しました。
実行中に、アプリケーションが例外処理をスローして中止することがわかりました。次に、Visual Studio でデバッグしたところ、msxml6.dll ライブラリを使用しているときに getElementByTagName() 関数が null ポインタを返すことがわかりました。これにより、さらに参照が中止され、msxml3.dll で正常に動作しています。
msxml6.dllが原因でこの「未処理の例外」が発生した理由を知っている人はいますか? どうすれば修正できますか?
delphi - Windows-1252XMLファイルのロード時に「OS関数の呼び出しに失敗しました」
編集:
エラーは確かに処理にありました。parseError
また、失敗すると、実際のエラーが明らかになります。そのエラーについては、フォローアップの質問を参照してください。
古い質問:
どういうわけか、Delphi XEでmsxmlユニットを使用してXMLをロードすると、以下のコードで例外が生成されることがあります。MSXML6を使用するWindowsXPProfessionalx86SP3およびMSXML6を使用するWindows7Ultimatex64SP1では失敗します。
このエラーは、XmlDocument.loadメソッド中に発生します。
XMLを以下のXMLにトリミングしました。
これは、XMLファイルの16進ダンプです。
これはXMLです:
エラーが発生するのはなぜですか?
(XMLは、MSXML6を使用しない.NETおよびその他の環境で完全に正常にロードされます)。
--jeroen
msxml - 有効なWindows-1252ドキュメント「システムエラー:-2146697210」の読み込み中にエラーが発生しました
どういうわけか、有効なWindows-1252 XMLをロードするときに、以下のコードがエラーを生成することがあります。
MSXML6を使用するWindowsXPProfessionalx86SP3では失敗します。
これは、MSXML6を使用するWindows 7 Ultimatex64SP1で成功します。
注:以下のコードはDelphiで記述されていますが、同等のコードは他の環境でも失敗します。
このエラーは、XmlDocument.loadメソッド中に発生します。
XMLを以下のXMLにトリミングしました。
これは、XMLファイルの16進ダンプです。
これはXMLです:
エラーが発生するのはなぜですか?
(XMLは、MSXML6を使用しない.NETおよびその他の環境で完全に正常にロードされます。Windows7Ultimate x64 SP1でも正常に動作します)。
--jeroen
c++ - c++ で xsl:include ディレクティブを解決するにはどうすればよいですか (.NET フレームワークは使用できません)
データベースから xslt をロードし、別の xslt に含めることができるようにメモリに保持する必要があります。
.NET フレームワークと xmlPreLoadedResolver クラスを使用してこれを実行できることはわかっていますが、残念ながら、これを .NET dll として記述することは許可されていません。
msxml6 C++ インターフェイスを使用してこれを行うことが可能かどうかを知っている人はいますか?
domdocument - MSXMLドキュメントをバージョン1からバージョン6にアップグレードするにはどうすればよいですか?
私のアプリケーションは、MSXMLバージョン1(MSXML.DOMDocument)を使用して、ユーザードキュメントをXML形式で保存します。
MSXML6(Msxml2.DOMDocument.6.0)にアップグレードしたい。問題は、古いドキュメントが新しいバージョンで常に読み取れるとは限らないことです。
これの原因は、古いMSXMLパーサーが非ラテン文字をUTF-8として正しくエンコードせず、新しいパーサーがこれらのドキュメントのロードを拒否することです。
私の質問-顧客の既存のファイルをMSXML6で読み取れるように読み取る/変換するにはどうすればよいですか?
xml-namespaces - MSXML 解析時の宣言されていない名前空間プレフィックスへの参照
どうすれば解決できますか
Microsoft の msxml 実装に問題がありますか?
解析する必要がある値を含む政府の Web サイトからの XML フィードを使用しています。xml には名前空間が含まれています。
XPath クエリを実行します。
次のエラーで失敗します。
編集:
元の XML を編集して名前空間の使用をすべて削除すると、次のようになります。
クエリ/rdf/item/statistics/exchangeRate/baseCurrency
は失敗せず、ノードを返します。
Microsoft XML を名前空間で動作させるにはどうすればよいですか?
編集 2
私はDOMDocumentオブジェクトにSelectionNamespacesを追加しようとしました:
xpath クエリは失敗しなくなりましたが、ノードも返されません。
こちらもご覧ください
c++ - COM および MSXML の問題 (64 ビットのみ)
巨大なアプリケーションを 32 ビットから 64 ビットに移植しています。このアプリケーションには、いくつかの外部ライブラリがあり、それらを無効にするか、64 ビット バージョンを使用しました。また、自分で作成した COM メソッドを介してデータベースにアクセスしています。また、32 ビットで問題なく動作する MSXML4 を使用していました。
MSXML4 には 64 ビット バージョンがないため、MSXML6 にアップグレードしました。MSXML のいくつかの機能、特に DOM パーサーを使用するだけなので、次の行を置き換えるだけです。
と
次に、次のようなことを試みます。
これは 32 ビットで正常に動作します。しかし、64 ビットでは、loadXML 関数が呼び出されると msxml6.dll が例外をスローします。CreateInstance は有効なポインターを返しますが、戻りコードは S_OK です。デバッグ出力に出力されるエラー メッセージもあります。
最初はライブラリの使い方がおかしいと思っていたのですが、次のことがわかりました。独自の COM コンポーネントを初期化する前に XML ファイルを読み取れば、動作します。そのため、独自の COM コンポーネントが COM ライブラリを「損傷」しているように見えます。しかし、これはどのように可能ですか?
少し実験していましたが、MSXML を使用しようとした場合にのみ問題が発生します。他のすべての COM オブジェクトは機能しています。使用中にIFileDialog(これもCOMクラスだと思います)がクラッシュしたことを除いて。
この問題は、COM コンポーネントの CoCreateInstance を呼び出した直後に発生しますが、この場合はあまり効果がありません。また、64 ビット データ型など、COM サーバーで明らかなエラーは見られません。
質問は次のとおりです。
MSXML の 64 ビット バージョンにはバグがありますか?
それとも、COM サーバーの 64 ビット ポートで致命的なミスを犯したのでしょうか?
誰かが同様の問題を経験しましたか?
実際の問題を追跡する方法がわからないため、現時点で本当に行き詰まっているので、助けていただければ幸いです。
c++ - インクルード ファイル msxml6.h を開けません - エラー、VS2005 C++
C++ VS2005v アプリケーションで致命的なエラーが発生しました。
インクルード ファイル msxml6.h を開けません。そのようなファイルまたはディレクトリはありません。
VS2008とVS2010を使用する前に、VS2005を使用してサーバー2008で作業しており、両方をアンインストールして2005を再インストールしてもエラーが発生しました。サーバー 2008 とフレームワーク 3.5、および SP1 用のプラットフォーム SDK をインストールしました。それでもエラーが発生しました。
注: Microsoft SDK フォルダーにファイルが表示されます。 VS2005 を使用する必要があります
助けてください!
msxml - MSXML 6、ユーザー/ PW認証、ResolveExternals
ユーザー/PWで保護されたURLからXMLリソースをロードして解析する必要がある場合、私が知る限り、MSXML DOM.Load()を使用することはできません。クレデンシャルを指定する場所はありません。
ただし、XMLHTTPRequestを使用してリソースを取得してDOMに解析する場合(.responseXMLプロパティを介して)、.resolveExternalsプロパティの値を指定する場所がありません。
これは、MSXML 3、4(または5)を使用してデフォルトでTrueに設定されている場合に多かれ少なかれ機能しますが、MSXML6ではデフォルトでFalseに設定されています。
MSXML 3.0、MSXML 4.0、およびMSXML 5.0では、デフォルトのresolveExternals 値はTrueです。MSXML 6.0では、デフォルト設定はFalseです。
このプロパティがFalseに設定されている場合、外部インクルードとインポートは解決されません。
私が見ていないこれを回避する方法はありますか?通常、特にXSDまたはWSDLを処理する場合は、外部を解決する必要があります。
または、私は自分自身をだましていて、XMLHTTPRequest(DOM.Load()呼び出しのみ)を使用する場合、おそらく.resolveExternalsは適用されませんか?
delphi - DelphiでMSXMLSAXを使用して大きなXMLファイルを組み合わせる方法
編集:私の(不完全で非常にラフな)XmlLiteヘッダーの翻訳はGitHubで利用できます
DOMを使用せずにDelphiの大規模なXMLドキュメントとMSXMLを単純に組み合わせる最良の方法は何ですか?COMコンポーネントのSAXReaderとXMLWriterを使用する必要がありますか?良い例はありますか?
変換は、ルート(コンテナー)から多くの大きなファイル(60MB以上)から1つの大きなファイル(約1GB)までのすべてのContents要素の単純な組み合わせです。
XmlWriterとXmlReadersを使用して次のC#コードで動作させていますが、ネイティブのDelphiプロセスで実行する必要があります。
システムの他の部分ではすでにMSXMLDOMを使用しており、可能であれば新しいコンポーネントを追加したくありません。