問題タブ [stax]
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.
java - Metro & StreamBuffer 名前空間エラー - これを正しく理解していますか?
すべて、私は (まだ) Java/Metro 2.0 から WSE 3.0 .NET Web サービスを呼び出すことに取り組んでいます。メッセージの本文とヘッダーを暗号化し、ヘッダーに署名するように、セキュリティ要件が設定されています。サービスにリクエストを送信して応答を受け取ることはできますが、Metro は署名を検証できず、WSIT コードからエラーをスローします。私は CVS から最新の WSIT コードを入手しました。これは、大失敗しているメソッドのコード スニペットです。
com.sun.xml.ws.security.opt.impl.incoming.GenericSecuredHeader から:
ご覧のとおり、そこには TODO があります。これは、メソッドが現在の状況を処理できないことを示していると思いますが、「範囲内」の名前空間が何を意味するのかわかりません。
以下は、壊れている Web サービス応答からの XML のスニペットです。
スタック トレース (以下に含まれる) では、参照 URI="#Id-46282a5d-c7fa-403c-8ac9-f7df0dfdb0cf" を検証できないと不平を言っています。 私がはっきりしていないのは、参照要素に名前空間属性または接頭辞がないために失敗しているのでしょうか? 親の Signature 要素から名前空間を継承することを許可する必要がありますか?それとも、StreamBuffer クラスがそれを処理できないようにすることはできますか?
対照的に、私の要求 (WSIT によって生成されたもの) からの同様の XML スニペットを次に示します。ここで、ds プレフィックスは
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
Metro がこれらのブロックを生成すると、すべてに名前空間プレフィックスが付きます。
まだここまで読んでいるなら - ありがとう!スタック トレースの一部を次に示します。
java - Stax XML オブジェクトを正規化する方法
DOMで実行しているプログラムであるStaxオブジェクトをCanonicalizeしたいのですが、DOMは大きなXMLドキュメント(1GBなど)を管理できないため、STAXが解決策です。
私が持っているコードは次のとおりです。
Staxで以下のコードを実行するという考え...
どうも :)
java - StAX-XMLStreamWriterを使用したバージョンとエンコーディングの設定
StAXを使用してXMLファイルを作成し、XSDを使用してファイルを検証しています。
XMLファイルの作成中にエラーが発生します:
コードスニペットは次のとおりです。
私はこのコードをUnixで実行しています。バージョンとエンコードスタイルを設定する方法を知っている人はいますか?
java - StAX を使用した XML ファイルのフォーマット
StAX XML ストリーム ライターを使用して XML ファイルを書き込んでいます。すべてのデータを 1 行に書き込みます。1 行ではなく、すべてのタグをインデントしたい。
java - CDATA の外にエスケープされていない XML を書き込む方法
コンテンツ自体が HTML である Stax を使用して XML データを書き込もうとしています。
私が試したら
私はこれを得る
次に、CDATA メソッドに気付き、コードを次のように変更します。
そして今回の結果は
これはまだ良くありません。私が本当に欲しいのは
CDATAセクションにいなくても生のテキストを書くことができるXML API/ライブラリはありますか? これまでのところ、私は Stax と JDom を見てきましたが、これを提供していないようです。
最終的には古き良き StringBuilder に頼るかもしれませんが、これはエレガントではありません。
アップデート:
これまでの回答にほぼ同意します。ただし<b>here</b>
、1MB の HTML ドキュメントをより大きな XML ドキュメントに埋め込みたいと考えています。あなたが提案したことは、その構造を理解するためにこの HTML ドキュメントを解析する必要があることを意味します。できればこれは避けたいです。
答え:
そうしないと、無効な XML ドキュメントが作成される可能性があります。
xml - 物理XMLファイルに依存しないユニットテストXML
私の質問は:
JUnitで、ファイルシステムに物理的に保存されているXMLファイルからSUTを読み取らせずに、テスト対象システム(SUT)のxmlデータを設定するにはどうすればよいですか?
背景:
請求書の作成規則を含むXMLファイルが提供されます。私の仕事は、これらのルールをXMLからJavaオブジェクトに変換することです。たとえば、XMLファイルに以下のようなタグがあり、30日が経過すると、トランザクションに請求できないことを示します。
これはJavaクラスに変換されます。たとえばExpirationDateInvoicingRule
XMLファイルを取得して*InvoicingRuleオブジェクトを作成するクラスInvoiceConfigurationがあります。StAXを使用してInvoiceConfiguration内のXMLドキュメントを解析することを考えています
問題:
InvoiceConfigurationの単体テストをしたい。しかし、InvoiceConfigurationがファイルシステム上のxmlファイルから物理的に読み取ることは望ましくありません。単体テストを、物理的に保存されているxmlファイルから独立させたい。メモリ内にxml表現を作成したいと思います。ただし、StAXパーサーはFileReaderのみを使用します(またはファイルオブジェクトで遊ぶことができます)
java - GAEで完全に有効なXMLを解析する場合、「コンテンツはプロローグで許可されていません」
私は過去48時間、この絶対に腹立たしいバグに頭を悩ませてきたので、ラップトップを窓から投げ出す前に、ついにタオルを投げてここで尋ねてみようと思いました。
AWSSimpleDBに対して行った呼び出しからの応答XMLを解析しようとしています。応答は問題なくネットワークに戻ってきています。たとえば、次のようになります。
このXMLをパーサーに渡します
何度も電話eventReader.nextEvent();
して、必要なデータを取得します。
これが奇妙な部分です-それはローカルサーバー内でうまく機能します。応答が届きます、私はそれを解析します、誰もが幸せです。問題は、コードをGoogle App Engineにデプロイしても、送信リクエストは引き続き機能し、応答XMLは100%同一で正しいように見えますが、次の例外を除いて応答が解析されないことです。
このXMLで「非表示の文字」やUTF8でエンコードされていない文字などをダブル、トリプル、クワッドでチェックしました。バイト順マークなどの配列でバイトごとに調べました。何もない; それは私がそれに投げることができるすべての検証テストに合格します。さらに奇妙なことに、Saxonベースのパーサーを使用した場合にも発生しますが、GAEでのみ、ローカル環境では常に正常に機能します。
完全に機能する環境でのみデバッガーを実行できる場合、問題のコードを追跡することは非常に困難になります(GAEでリモートデバッグするための適切な方法が見つかりませんでした)。それにもかかわらず、私が持っている原始的な手段を使用して、私は以下を含む百万のアプローチを試みました:
- プロローグがある場合とない場合のXML
- 改行ありとなし
- プロローグの「encoding=」属性の有無
- 両方の改行スタイル
- HTTPストリームに存在するチャンク情報がある場合とない場合
そして、私はこれらのほとんどを複数の組み合わせで試しましたが、それらが相互作用することが理にかなっています-何もありません!私は私の機知に富んでいます。誰かがこのような問題を見たことがありますか?それがうまくいけばそれに光を当てることができますか?
ありがとう!
java - XMLOutputStream、名前空間の修復、および名前空間のない属性
簡単なタスク:要素に2つの属性を記述します。
ウッドストックスの答え:
JDK 6の回答:
何?!
さらに、要素にプレフィックスを追加すると、次のようになります。
JDK6はxmlns=""を発行しようとしなくなりました:
そして、属性を削除した場合(つまり、属性が1つしかない場合)は問題ありません。
これはJDK6のバグだと確信しています。そして、誰かが両方のライブラリ(および他のライブラリ)を幸せに保つ回避策を提案できますか?私がそれを助けることができるならば、私はwoodstoxを要求したくありません。
java - XMLEventWriterを最初から:xmlns属性を発行するにはどうすればよいですか?
StAX APIのXMLEventWriterを使用して、XMLドキュメントを最初から作成しようとしています。
デフォルトの名前空間属性を発行する方法がわかりません。
たとえば、デフォルトの名前空間URI文字列は「http://www.liquibase.org/xml/ns/dbchangelog/1.9」です。これをXMLルート要素にxmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"として表示したいと思います。
ここの魔法のレシピは何ですか?XMLEventWriter.setDefaultNamespace()が機能しませんでした。
ありがとう、レアード
java - XMLEventWriter: 空の要素を書き込むように指示するにはどうすればよいですか?
javax.xml.stream.XMLEventWriter
空の要素が(明示的な開始要素と終了要素のペアの代わりに)書き込まれるように、内部またはjavax.xml.stream.XMLOutputFactory
設定するオプションが表示されません。
Woodstox にはこれを行うプロパティがあるようですが、標準化されていません。
これを行う明白な方法がありませんか?