問題タブ [msxml]
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.
c++ - XML をバイト配列から C++ MSXML にロードする
ネットワーク ソケット経由で XML を受信しています。その XML を取得して DOM にロードし、さらに操作を実行する必要があります。MSXML では、UCS-2 または UTF-16 のいずれかの入力文字列が必要であり、文字列からロードするときにエンコーディング タイプの XML ヘッダーを完全に無視します。これは XML フラグメントのロードを許可するので、これはある程度理にかなっています。
この問題を処理するには、次の 2 つの方法が考えられます。
1) ファイルをディスクに書き出し、ファイル パス経由で MSXML に読み込みます。余分なディスク I/O があるため、この方法はあまり好ましいものではありません。
2) XML ヘッダーに到達してエンコーディングを手動で検出し、MultiByteToWideChar を呼び出して UTF-16 に変換し、検出されたエンコーディングに基づいてコード ページを指定します。このアプローチは問題なく機能しますが、エンコーディング検出を MSXML にプッシュしたいと思います。
これを達成する方法について他にアイデアはありますか?
私は他の XML パーサーを調べたことはありませんが、MSXML 以外の DOM パーサーがこれをどのように実現するかに興味があります。
ありがとう、ポール
c++ - バリアントbstrからstd::stringへの変換のデフォルトのエンコーディング
MSXML DOMからプルされたバリアントbstrがあるので、UTF-16にあります。私はこの変換でどのデフォルトのエンコーディングが発生するかを理解しようとしています:
テストから、デフォルトのエンコーディングはWindows-1252またはAsciiのいずれかであると思いますが、確かではありません。
ところで、これは私が修正してバリアントをwstringに変換し、WideCharToMultiByteを呼び出してマルチバイトエンコーディングに移行するコードのチャンクです。
ありがとう!
xml - 従来のASP(MSXML)でこのXMLからXMLノードを取得するにはどうすればよいですか?
OK、私は私の知恵の終わりにいます。これは完全に些細なことのように思えますが、1時間経っても、それを機能させることはできません。
キャンペーンモニターAPIからタイムゾーンのリストを取得しようとしています。残念ながら、これを行う必要のあるページは従来のASP / Javascriptで記述されているため、APIラッパーだけを使用することはできません。
私は次のようにリクエストを行っています:
次のように、正しいXMLがサーバーから返されます。
次に、このXMLをMSXMLドキュメントにロードします。
コメントからわかるように、問題は、私が何をしても、それらの「文字列」ノードと一致しないように見えることです。ASP / Javascriptに関してはかなり錆びています-名前空間と関係があるのではないかと思います(過去にこれに問題があったことは知っています)が、何が原因かわかりません。
誰かが私が間違っていることを指摘できますか?どんな助けでも大歓迎です!
xml - VBScriptを使用してXMLファイル内のすべてのノードをトラバースする
ツリーの深さに関係なく、XMLファイル内のすべてのノードをトラバースすることになっているVBScriptを作成しました。これは、2レベル以上の深さのノードのノード名が表示されないことを除いてうまくいきます。他のプログラムでさらに処理するために名前と値のペアを使用できるように、ノード名と値が必要です。不足しているノード名を表示するのを手伝ってくれませんか。
以下は私のコードです:
およびXML:
vb.net - 方法: MSXML パーサー (バージョン 3 以降) がインストールされているかどうかをプログラムで検出する
MSXMLパーサーがマシンにインストールされているかどうかを検出する方法を教えてください。レジストリ エントリを探しましたが、取得できませんでした。VB.NET アプリケーションを作成しています。前もって感謝します :)
soap - クラシック ASP を使用して「application/soap+xml」SOAP リクエストを送信する
これについての助けをいただければ幸いです。私はここ数日間それに取り組んできました。
以下は、これまでに取得したコードです。残念ながら、実行すると HTTP 415 エラーが発生します。コンテンツ タイプが 'text/xml; であるため、メッセージを処理できません。charset=UTF-8' は、予期されたタイプ 'application/soap+xml;' ではありませんでした。charset=utf-8' .
application/soap+xml の content-type を送信する必要があります。これは、Web サービスで許可されている唯一のタイプであるためです。従来の ASP で実行する必要があります。
「send」行を「objRequest.send objXMLDoc.XML」に変更しようとしましたが、これによりHTTP 400 Bad Requestエラーが発生します。
xml - MSXML6でmax()と同等のものを取得するにはどうすればよいですか?
明らかに、MSXML6はXSLT 2.0をサポートしていませんが、少なくともmax()
関数はサポートしていません。兄弟の中で最も高い値を含むノードを見つける必要があります。それらは任意の順序です。
順序を同じままにしておきたいので、追加order-by
とチェック[0]
は問題外です。
これを単一のXPathステートメントで実行したいと思います。テンプレートを呼び出したり、それよりも複雑なロジックを使用したりしたくありません。恐ろしいMSスクリプト拡張機能がどこかに埋め込まれていると確信しています。Eww。
私は考えました:
しかし、期待どおりに機能しませんでした(常に最初のノードを返します)。他に気の利いたXPathの魔法はありますか?
xml - XSL FO の生成
XSL 変換プロセス中に XSL FO ドキュメントを取得するのに役立つ XSLT パーサー (MSXML 4.0 など) はありますか?
つまり、XML および XSL ファイルから XSL FO ファイルを取得するにはどうすればよいでしょうか。
ありがとう、アイウィー
c++ - MSXML から Xerces への移行
アプリケーションを Windows から Linux に移植する予定です。現在、アプリケーションは XML 解析に MSXML を使用しています。Xerces XML パーサーを使用して、クロス プラットフォーム ソリューションを提供することにしました。コードのサイズが大きすぎるため、一部の機能が壊れる可能性があるため、この移植目的でコードの内部部分すべてに手を加えたくありません。誰でもこれを行うための最良の方法を提案できますか?
xml - XML スキーマのルート要素の定義が正しくありません
次の退屈なルート要素を持つスキーマがあります。
私に関する限り、スキーマは有効であり、たとえば、Excel は問題なくそれを読み取ります。
ただし、MSXML (v3 または v4 または v6) を使用してこのスキーマに対して検証しようとすると、件名のエラーが発生します。(XMLSchemaCache を作成し、読み込まれたスキーマを追加するとエラーが発生します。)
Google から、W3 標準に準拠していない MS XML エンジンには概念上の問題があり、別の名前空間定義を使用する必要があることを知りました。しかし、より正確な定義も問題の適切な説明も見つかりませんでした。フォーラムで返信のない多くの投稿しか見つかりませんでした。
この件についてもう少し詳しく説明してくれる人はいますか?
編集
何らかの理由で、プロジェクトの参照をバージョン 3、4、および 6 に切り替えたにもかかわらず、常にバージョン 3 が使用されていました。4/6への強制切り替えで解決しました。そのため、v3 はスキーマを解析できませんが、他のものは問題ありません。これで閉鎖できると思います。