問題タブ [ixmldomdocument]
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++ - 終了タグなしで IXMLDOMDocument を保存する
C++ 経由で MSXML を使用して を呼び出すと、次のようIXMLDOMDocument::save
に空の XML 要素に終了タグが付けられます。
しかし、私はそれを次のように保存したい:
それを達成するために何をする必要がありますか?
xml - プロセス外の MSXML IXMLDOMDocument::save はどこに保存されますか?
MSXML IXMLDOMDocument::save はどこに保存しますか? ファイル名引数で呼び出されたときを意味します。
「C:\pathto\mydoc.xml」はどこにありますか?
XMLDOMDocument がアウト プロセスであると考えてください。この場合は、別の物理マシン上にあります。呼び出し元のマシンの「C:...」に保存しますか、それとも COM オブジェクトをホストするサーバーに保存しますか?
c++ - C++ で XSD に対して XML ノードを検証する方法は?
ファイル全体ではなく、特定のノードに対する検証を求めていることに注意してください。例えば
この XML ドキュメントには、"UserDefinedNode" を除くドキュメント全体を検証するために使用できる wholeDoc.XSD があります (このノードは xsd で "any" タグで指定され、ユーザーはそのノードの下に何でも定義できます)。
「UserDefinedNode」を検証するために別個の userdefined.XSD ファイルを用意することは可能ですか? これを検証するために MSXML for C++ (IXMLDomDocument) を使用することは可能ですか?
ありがとう!
xml - XmlTextWriter のように XML を保存しますが、DOM を使用します
XmlDocument を使用して C# で XML を構築し、エンコーディング情報を含めて XML をファイルに保存する場合は、次のように XmlTextWriter を使用します。
上記のコードでは、返される文字列の構文は次のとおりです。
IXMLDOMDocument メソッドを使用して同じ動作をしたいと考えています。このシナリオでは、XML 文字列を抽出する唯一の方法は、xmlDoc.xml
メソッドを使用することです。ただし、この方法を使用すると、エンコーディングと同様に、文字列はまったく異なります。
XmlTextWriter で取得したのと同じ方法で、同じエンコーディング結果で IXMLDOMDocument を出力する方法はありますか?
Tks
編集
DOM を介して XML を生成するために使用するコードは、Delphi にあります。
私の主な問題は、結果の文字列のエンコーディングです。結果の WideString を C# WebService に送信し、XmlDocument で読み取ると、アクセント付きの文字がすべて間違っているためです。C# で XML を生成し、XmlTextWriter を介してエクスポートし、それを Delphi に送り返し、DOM を介してロードすると、文字は正しくなります。
編集
を使用するvXML.Save(file_name.xml)
と、保存されたファイルは正しくコーディングされ、WideString (Delphi では Unicode 文字列) にロードして Web サービスに送信すると、うまくいきます。しかし、それをディスクに保存せずに、DOM を介して行うにはどうすればよいでしょうか?
xml - Delphi、IXMLDOMDocument2、無効な文字が原因でロードが失敗する
Delphi 2009 と IXMLDOMDocument2 の使用
XML を IXMLDOMDocument2 にロードすると、「テキスト コンテンツに無効な文字が見つかりました」というエラーが表示されます。文字は 1B (16 進数) で、CDATA セクション内に存在します。Microsoft の XML ビューアー (IE) は、ファイルを問題なくロードします。XMLは次のようになります...
<data><child><![CDATA[-- ]]></child></data>
注: XML を貼り付けようとしましたが、特殊文字が削除されました。CDATA セクションには、XML ファイルの「--」に続く 1B 文字があります。
XML およびその他のエンコーディングの先頭に追加しようとしましたが、何も機能しません。このファイルをロードするためにできることはありますか?
ありがとう、マイケル
xml - DelphiでIXMLDOMDOCUMENTを使用してxsi:nilattibuteを削除します
多くのxmlノードを含むxmlドキュメントがあります。ドキュメントにはxsi:nil="true"
属性があります。これらのノードに値を設定すると、nil
属性は残り、xsdに対して無効になります。
質問:
xsi:nil
MSXML2_TLBでDelphi2006コードを使用して属性を削除するにはどうすればよいですか?
私はこれを試しました:
エラーなしで実行されますが、属性は削除されません。
xml - IXmlDomDocument2.XML で引用符を適切にエスケープするにはどうすればよいですか?
プログラムからエクスポートされた XML が引用符をエスケープせず (, に変わる"
) "
、受信側で問題が発生するという問題に取り組んでいます。&s と山かっこは問題なくエスケープされますが、引用符はエスケープされません。
XML エクスポート コードを調べてみたところ、これは非常に単純なIXmlDomDocument2
DOM インターフェースであることがわかりました。しかし、.XML
メソッドを呼び出して XML 文字列出力を生成するステップに到達したとき、すべての作業が の内部で行われているため、追跡できない独自性の壁にぶち当たりましたC:\Windows\System32\msxml3.dll
。
したがって、明らかに Microsoft のIXmlDomDocument2
実装は、一部のシンボルをエスケープする方法を知っていますが、他のシンボルはエスケープしません。さらに悪いことに、明白だが醜い解決策 (ドキュメント全体を再帰的にトラバースし、値のすべての引用符を '"' に置き換えることによって前処理ステップを実行してから、 を呼び出す.XML
) は機能しません.XML
。これを修正する方法はありますか?
ixmldomdocument - RAM からロードされた IXMLDOMDocument にパスを設定する
従来の ASP を使用しています。すでに RAM にロードされているスタイルシートがあります。私の問題は何ですか、私のXSLTには
初期化。
RAM から IXMLDOMDocument オブジェクトにロードすると、相対パスがスローされます。これが私の現在のコードです
XSLT ファイルは RAM から読み込まれるため、コンピューターは xsl:include タグの相対パスを特定する方法を知りません。したがって、ここからファイルをプルしようとします: C:\windows\system32\inetsrv
「デフォルトパス」を設定するか、何らかの方法でシミュレートする方法が本当に必要です。私が考えたいくつかのオプション(実際にはやりたくない)は次のとおりです。
- XSLT ファイルをディスクの必要な場所に保存し、XSLTObj.load を使用します。
- パスを配置したい場所から「ダミー」の XSLT ファイルをロードし、内容を RAM にある XSLT 内容に置き換えます。
代わりに使用したいパスを設定する何らかの方法を本当にお勧めします。アイデア?
com - msxml6/IXMLDOMDocument2を使用してXML宣言を削除します
C ++/COMを使用してXMLからのみXML宣言を削除したい-
IXMLDOMDocument2
のインターフェースを使用してmsxml6
どうすればこれを達成できますか?