問題タブ [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.
.net - System.XmlはMSXMLを使用しますか?
System.XmlのいくつかのXMLファイルといくつかのクラスを使用するC#アプリケーションを開発しています。同僚は、.NETフレームワークとともにMSXML6再配布可能ファイルをインストールに追加することを主張していますが、.NETフレームワークがMSXMLを使用したり、必要としたりすることはないと思います。.NETからのMSXMLの使用がサポートされていないことはよく知っていますが、System.Xml自体がMSXMLを低レベルでラップすることは理論的には可能だと思います。.NETに独自の実装があることを明確にするものは見つかりませんでしたが、MSXMLが必要であることを示唆するものも見つかりませんでした。
議論を解決するのを手伝ってください。System.XmlはMSXMLを使用しますか?
xml - プラットフォームに依存しない方法でノードセット関数を使用する方法は?
LinuxとWindowsで使用したいxlstファイルを書いています。このファイルでは、MSXML と xsltproc (それぞれ「urn:schemas-microsoft-com:xslt」と「http://exslt.org/common」) の異なる名前空間で宣言されたノード セット関数を使用します。ノードセットを使用するプラットフォームに依存しない方法はありますか?
.net - ノードセットを返すユーザー定義関数を宣言する方法は?
私はこのようなものが欲しい:
どの戻り値の型を使用する必要がgetNodes()
あり、その本体に何を入れる必要がありますか?
xml - C++ からの MSXML - 新しく作成されたドキュメントをきれいに印刷 / インデントする
ここからダウンロードしたラッパーを使用して、MSXML パーサーを使用して XML ファイルを書き出しています: http://www.codeproject.com/KB/XML/JW_CXml.aspx。コードから新しいドキュメントを作成するとき(ファイルからロードして変更しない)、結果がすべて1つの大きな行になることを除いて、うまく機能します。テキスト エディタで読みやすいように、要素を適切にインデントしたいと考えています。
グーグルは、同じ質問を持つ多くの人々を示しています - 2001年頃に尋ねられました. 返信は通常、「XSL 変換を適用する」または「独自の空白ノードを追加する」と言います。特に最後の 1 つは %( なので、2008 年には MSXML 出力をきれいにするためのより簡単な方法があることを願っています。
xml - xml ファイルの連結
いくつかの xml ファイルがあり、その名前は別の xml ファイルに保存されています。
xsl を使用して、xml ファイルの組み合わせの概要を作成したいと考えています。msxml 拡張機能を使用してこれを行う方法があったことを覚えています (私は msxml を使用しています)。
を使用して各ファイルのコンテンツを取得できることはわかっていますが、select="document(filename)"
これらすべてのドキュメントを 1 つに結合する方法がわかりません。
2008 年 10 月 21 日 結合した xml に対してさらに処理を行う必要があることを述べておく必要がありました。そのため、変換から出力するだけでは十分ではなく、ノード セットとして変数に格納する必要があります。
xml - xsltでネストされた述語
xsltで次と同等のことを行うことは可能ですか?
これは、Visual Studio 2008内で失敗し、次のエラーが発生します。
これは機能するはずですか?これはXSLTのMS実装の問題ですか、それともAttrAがAttrAValueに等しく、TagBinnerTextがTagBValueに等しいTagBノードを持つすべてのTagAノードを取得する方法がありますか。
c++ - MSXML 選択ノードが機能しない
私は自動テストアプリに取り組んでおり、現在、同一である必要があるがそうではない可能性がある2つのXMLファイル間の値を比較する関数を作成中です。処理しようとしている XML のサンプルを次に示します。
<subreport>
(複数の要素があり、それらの中に複数の要素があることに注意してください<record>
。)
私が望むのは<value>
、2 つのドキュメントのタグを抽出し、それらの値を比較することです。その部分は私が行う方法を知っています。問題は抽出そのものです。
私は C++ で立ち往生しているので、MSXML を使用しており、データ形式を変更することにした場合に備えて、アプリが実際の XML 操作を抽象化できるようにするラッパーを作成しました。
そのラッパーである CSimpleXMLParser は、XML ドキュメントをロードし、その「トップ レコード」を XML ドキュメントのドキュメント要素に設定します。(CRecord は、そのサブクラスの 1 つである CXMLRecord を持つ抽象クラスであり、子レコードへの単独またはグループによるアクセスを提供し、Record の「値」へのアクセスも許可します (CXMLRecord の場合、子要素または属性の値) .) CXMLRecord には、MSXML::MSXMLDOMNodePtr と、CSimpleXMLParser のインスタンスへのポインターが含まれています。) ラッパーには、CXMLRecord が子レコードを返すために使用する、子を返すためのユーティリティ関数も含まれています。
私のコードでは、次のことを行います (<subreport>
機能するかどうかを確認するためだけにすべてのノードを返そうとします)。
これは常に false を返します。CXMLRecord::GetChildRecords() の実装の本質は基本的に
CSimpleXMLParser::SelectNodes() は次のとおりです。
実行すると、トップ レコードが確実に<report>
要素に適切に設定されます。子ノードの取得 (ラッパー経由ではなく、MSXML インターフェイス経由) やその名前など、あらゆる種類の処理を実行できます。アプリの別の場所で解析のために使用しているため、ラッパーが機能することはわかっています。 XML 構成ファイルであり、問題なく動作します。
XPath クエリ式で何か間違ったことをしているのかもしれないと思いましたが、考えられるすべての順列は喜びを与えません。このXML ファイルを処理しようとすると、MSXML::IXMLDOMNodeListPtr
返されるIXMLDOMNodePtr::SelectNodes()
は常に長さ 0 です。
これは私を夢中にさせています。
c++ - IXMLDOMNode から要素の属性にアクセスするにはどうすればよいですか?
C++ で XML DOM ドキュメントを作成しています。私の問題は次のとおりです。ドキュメント内の要素から XPATH クエリを実行すると、別の要素が返されることがわかっています。elementPtr->selectSingleNode 呼び出しは、IXMLDOMNode を返します。このノードの属性にアクセスするにはどうすればよいですか?
私の一部は、ノードを要素にダウンキャストしたいと考えていますが、キャストを機能させることができませんでした。
私は試した
次の実行時エラーが発生します。
私が試した他のルートは、ノードを使用することでした:
これは「parentNode->get_attributes()」で失敗します。
何かが足りないようです。API はそれほど使いにくいものであってはなりません。
- 編集 -
私が見逃していたのは、selectSingleNode 呼び出しが失敗し、NULL ポインターが残っていたことです。その上で QueryInterface を呼び出すことも、その上で get_attributes を呼び出すこともできません:P
間違った質問をしたことに気付くのに役立った回答ではなく、質問に適合する回答を選択しました。
delphi - Delphi および XPath 関数
Delphi の関数 selectNodes() で Xpath ノード セット関数 position() を使用して、ノード リストから特定の数の要素のみを選択できますか? 私がこれを好きなら:
すべて問題なく、インデックス1の要素を取得しますが、試してみると
試してみると、「不明なメソッド」という例外が発生します
「予期しないトークン <」が表示されます。私はdelphi7を使用しており、新しいバージョンのmsxmlを使用して新しいタイプライブラリをプロジェクトにインポートしました。
newline - MSXML と Document.xml プロパティの改行正規化(?)
次の単純な xml を作成しました (C エスケープ シーケンスを使用) " <A>\n</A>
" MSXML
(v4 および v6) IXMLDOMDocument2.xml を使用して DOM ドキュメントをシリアル化すると、改行が dos 形式に変更され、<A>\r\n</A>
代わりに " " が返されます。
DOM を使用して<A>
要素内の文字列ノードのみを取得すると、正しい単一の文字("\n")
列が取得されます。
もちろんpreserveWhiteSpace
設定してますVARIANT_TRUE
XML.Net
Xerces パーサーは正常に動作し、xml ドキュメントのシリアル化中に保存された文字列を変更しません。
それは msxml のバグですか? 何か案が?
thxジリ