問題タブ [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.
http - MSXML2.XMLHTTP send メソッドは事前バインディングで機能し、遅延バインディングで失敗します
以下のコードは機能します。しかし、行をコメントアウトして行Dim objRequest As MSXML2.XMLHTTPのコメントを外すDim objRequest As Objectと、エラーメッセージで失敗します:
パラメータが正しくありません
その理由と、(もしあれば) どうすればよいでしょうか?
Corey さん、はい、MSXML タイプ ライブラリへの参照なしでコードを機能させるには、そうしなければならないことはわかっています。それはここでは問題ではありません。Dim objRequest As Object使用するかどうかに関係なく、使用するとコードが失敗します
Set objRequest = NEW MSXML2.XMLHTTP参照付き、または
Set objRequest = CreateObject("MSXML2.XMLHTTP")参照なしで。
c++ - MSXML2::IXMLDOMDocument2Ptr->GetXML() が文字列を台無しにしています!
全て、
これは私のコードです
この時点で、私の文字列は壊れています (最初の数文字だけで、その後ゴミになります)。エンコードの問題のようです。
私も次のことを試しました:
それでも私は同じ結果を得ています。
xml ドキュメントで何も変更せずに GetXML() を呼び出しても、まだゴミになります。
この時点で、破損したポインターを別のポインターに割り当てようとすると、エラーが発生します。
書き込み保護されたメモリを復元しようとしました。これは多くの場合、他のメモリが破損していることを示しています。
なにか提案を?
EDIT1:
これは、XML 文字列のサイズに関連して発生していることがわかりました。特定の XML 文字列で発生し、(同じスキーマを維持して) サイズを小さくすると、問題なく動作します。MSXML2::DOMDocument40 にはサイズ制限があるように見えますか? 詳細には、16407 文字を超えると発生します。RUBBISH を取得する GetXML がもう 1 つあります。それが <= 16407 であれば、すべて正常に動作します。
EDIT2:
ロディは正しかった - 私はそれ_bstr_tがクラスであることを見逃していました...
ベルを鳴らしますか?
乾杯
multithreading - MSXML XSL 変換のマルチスレッド パフォーマンスの競合
MSXML6 を使用して XML メッセージを継続的に解析し、準備された XSLT 変換を適用してテキストを生成するマルチスレッド サーバー C++ プログラムがあります。これを 4 つの CPU を搭載したサーバーで実行しています。各スレッドは完全に独立しており、独自の変換オブジェクトを使用します。スレッド間で COM オブジェクトが共有されることはありません。
これはうまく機能しますが、問題はスケーラビリティです。実行時:
- 1 つのスレッドで、スレッドごとに毎秒約 26 の解析 + 変換を取得します。
- 2 スレッドの場合、約 20/s/スレッドが得られます。
- 3 スレッド、18/s/スレッド。
- 4 スレッド、15/s/スレッド。
スレッド間で共有されるものは何もないので、ほぼ線形のスケーラビリティーを期待していたので、4 スレッドの方が 1 スレッドよりも 4 倍速くなるはずです。代わりに、2.3 倍しか速くなりません。
これは、古典的な競合の問題のように見えます。コード内で競合が発生する可能性を排除するために、テスト プログラムを作成しました。ドキュメントがスレッド間で共有されることはないため、不要なロックを回避するために、FreeThreadedDOMDocument の代わりに DOMDocument60 クラスを使用しています。キャッシュラインの偽共有の証拠を探しましたが、少なくとも私のコードには何もありませんでした。
別の手がかりとして、コンテキスト スイッチ レートは各スレッドで 15k/s を超えています。原因は、COM メモリ マネージャーまたは MSXML 内のメモリ マネージャーであると推測しています。おそらく、メモリの割り当て/割り当て解除ごとに取得および解放する必要があるグローバルロックがあります。この時代に、メモリ マネージャーがマルチスレッドのマルチ CPU シナリオで適切にスケーリングするように記述されていないとは信じられません。
この競合の原因や解消方法を知っている人はいますか?
c++ - MSXML::IXMLDOMElement から値データを取得するにはどうすればよいですか
私はxml文字列を持っています
私が取得したいのは、親の中にあるデータの生のxmlです。私はMSXMLを使用しています
戻ってきています
.
davelauriegabrielle を返します
取得したい場合は、どの関数を使用しますか?
これらの機能に関する優れたドキュメントを知っている人はいますか? 私が見たものはすべてリンクされた悪夢です。
java - XmlTextAttribute と CDATA
カスタムメイドの Wysiwyg コンポーネントを使用して、ユーザーが HTML、JavaScript、および CSS を含むオブジェクトを作成できるアプリケーションの一部があります。これらのオブジェクトは、ある時点でシリアライズされ、後でデシリアライズされます。ただし、ユーザー/クライアントは世界中にいるため、逆シリアル化中に不満を引き起こす文字を入力することがあります。最近、中国のユーザーからシリアル化された XML に表示されるのを見たことがありますが、これは後に XML が MSXML2 を使用する一部の Java コードを介して読み込まれるため、問題を引き起こします (同じことは .NET および System.Xml の問題ではありませんが、これは別の問題です)。 )。現在、MSXML2 で行き詰まっているため、これについては個別に対処する必要があります。
現在の HtmlTextAttribute ではなく、一部のフィールドを CDATA としてシリアル化するように変更することを提案します。
どうすればこれを達成できますか?また、そのような変更の前にシリアル化されたデータに影響を与えますか?
asp.net - ServerXMLHTTP タイムアウトで xml を投稿する
私は2つのウェブサイトで働いています。1 つは、xml を新しい asp.net (.net 3.5) Web サイトに投稿する既存の従来の ASP サイトです。従来の ASP サイトでは、vbscript で msxml の serverxmlhttp オブジェクトを使用して、この xml を送信しています。asp.netサイトに一見無関係な変更を加えるまで、すべてが機能します。
System.Speech.Synthesis を使用してテキストから wav ファイルを生成するコードを数行追加すると、従来の ASP Web サイトの serverxmlhttp.send コマンドがタイムアウトします。asp.net ページが正常に動作していることを確認できる限り、問題なく数行の新しいコードを実行できます (wav ファイルが生成されます)。問題の原因となっている数行の音声コードは、タイムアウトのかなり前に実行されます。
asp.net ページが、実際には送信されなくなった従来のページに何らかの確認応答を送信していたようです。また、音声コードが非同期である必要があるという例外をスローしていたことも指摘しておく必要があります。ただし、 async="true" の場合は機能します。それを壊すのはスピーチの行だけです。「問題コード」はまさに
何が間違っているのか、またはこれをデバッグするために私が使用できるものについて何か提案はありますか?
xml - Delphi での msxml によるスキーマ検証
参照するスキーマに対して XML ファイルを検証しようとしています。(Delphi と MSXML2_TLB を使用。) コード (の関連部分) は次のようになります。
これにより、キャッシュがロードされます ( schemas.length > 0) という結果になりますが、次の割り当てで例外が発生します。「XMLSchemaCache-schemacollections のみを使用できます。」
これについてどうすればよいですか?
c++ - msxml を Visual Studio 2008 Express (ATL クラスなし) で狂わずに使用するには?
私はすでに解決策を見つけているので、それは本当に質問ではありません。かなり時間がかかったので、ここで説明したいと思います。
Msxml は COM に基づいているため、メモリ割り当ての問題を処理するのに役立つクラスがある場合でも、C++ で使用するのは簡単ではありません。しかし、新しい XML パーサーを作成するのははるかに難しいため、msxml を使用したいと考えました。
問題:
( IXMLDOMNodeCComPtrごとに手動で Release() を呼び出さなくても済むようにするためのスマート ポインター)、CComBSTR(C++ 文字列を文字列の COM 形式に変換するため) およびCComVariant. この 3 つの役立つクラスは ATL クラスであり、#include <atlbase.h>.
問題: Visual Studio 2008 Express (無料版) に ATL が含まれていません。
解決:
いくつかの単純なヘルパー クラスを含むcomutil.hとを使用します。comdef.h
_bstr_t多かれ少なかれ置き換えますCComBSTR_variant_t多かれ少なかれ置き換えますCComVariant_com_ptr_tCComPtrを使用して間接的に置き換えます_COM_SMARTPTR_TYPEDEF
小さな例:
xml - MSXMLのcreateProcessingInstructionが不完全な出力を生成するのはなぜですか?
次のVBAコード<?xml version="1.0"?>が出力として生成されます。
なぜencoding="UTF-8"取り残されているのですか?