問題タブ [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 - StAXを使用したXMLドキュメントへの小さな変更
現在、XMLファイルを読み込んで、いくつかの小さな変更を加え(一部の属性の値を変更して)、再度書き戻そうとしています。
StAXパーサー()を使用しjavax.xml.stream.XMLStreamReader
て各イベントを読み取り、変更したいイベントかどうかを確認し、javax.xml.stream.XMLStreamReader
変更が必要ない場合はStAXライター()に直接渡すつもりでした。
残念ながら、それはそれほど単純ではないように見えます-ライターにはイベントタイプとパーサーオブジェクトを取得する方法がなく、とのようなメソッドのみがwriteAttribute
ありwriteStartElement
ます。明らかに、XMLドキュメントで発生する可能性のあるすべてのタイプの要素のケースを含む大きなswitchステートメントを記述し、それを再度書き戻すことはできますが、単純なはずの何かには多くの問題があるようです。 。
StAXで読み込んだものと非常によく似たXMLドキュメントを簡単に書き出すことができる何かが欠けていますか?
java - さまざまな XML ドキュメントを処理するために Java をどのように使用しますか?
Java アプリケーションを使用してさまざまな XML ドキュメントを解析するための最良の方法を探しています。私は現在、SAX とカスタム コンテンツ ハンドラーを使用してこれを行っていますが、うまく機能します。
私は、現在 1 つの形式の XML ドキュメントを受け取り、さまざまな XML 要素の変更を加えた 2 つの追加の XML ドキュメント形式を受け取る、同じプログラムを持つオプションを検討することにしました。ドキュメントの最初の「startElement」に基づいて、ContentHandler を適切なものと交換したいと思っていましたが、ええと、ContentHandler が設定され、ドキュメントが解析されます。
そのため、最初にできると思っていた方法でこれを行うことができるようには見えません。
そうは言っても、私はこれを完全に間違って見ていますか?複数の個別の XML ドキュメントを同じ XML 処理コードで解析する最適な方法は何ですか? 以前、もっと一般的な投稿で質問しようとしましたが、漠然としすぎていたと思います。これらの XML ドキュメントはかなり大きく、システムは数分ごとに約 1200 を受信するため、速度と効率のために DOM を実際に調べたことはありません。それはただの一方通行の情報発信です
この質問を長くしすぎて、混乱を招きます。以下は、単一の SAX、StAX、または ?? にしたいいくつかのさまざまな XML ドキュメントのモックアップです。パーサーはきれいに対処します。
製品.xml:
store.xml:
manager.xml:
java - 最高の StAX 実装
簡単に検索すると、参照実装 ( http://stax.codehaus.org )、Woodstox 実装 ( http://woodstox.codehaus.org )、Sun の SJSXP 実装 ( https://sjsxp.dev.java.net ) が見つかります。 / )。
これらの相対的なメリットについてコメントしてください。また、私が検討すべき他の実装についても記入してください。
java - JAXB または StAX メッセージの制限
現在、Axis 2 実装を使用して Bea Websphere 6.1 環境で WebService を開発しています。現在の Web サービスの標準 (JAXB、JAXWS、StAX...) を尊重しようとしています。
このプラットフォームでの XML メッセージの長さは?
私は周りを検索しましたが、このトピックに関連するものは何も見つかりませんでした.
java - Java での StAX XML フォーマット
StAX(特にwoodstox)を使用して、出力xmlを改行とタブでフォーマットすることは可能ですか?つまり、次の形式で:
それ以外の:
これがwoodstoxで不可能な場合、これを行うことができる他の軽量ライブラリはありますか?
java - Sun JDK1.6 組み込み StAX パーサーが DTD エンティティーを解決しないようにする方法
XML ストリームを変更するために、StAX イベント ベースの API を使用しています。ストリームは、DTD 宣言を備えた HTML ドキュメントを表します。この DTD 宣言を出力ドキュメント ( を使用して記述) にコピーしたいと考えていますXMLEventWriter
。ファクトリに DTD を無視するように依頼すると、DTD はダウンロードされず、ステートメント全体が削除され、" <!DOCUMENTTYPE
" 文字列だけが残ります。無視しない場合、DTD 全体がダウンロードされ、DTD イベントを逐語的に出力するときに含まれます。この DTD をダウンロードするのに時間をかけたくありませんが、完全な DTD 仕様を含めます (エンティティの解決は既に無効になっており、必要ありません)。外部DTDのフェッチを無効にする方法を知っている人はいますか?
java - Java StAX を使用して XML 処理命令をフォーマットして読み取るにはどうすればよいですか?
まず、XML 処理命令をフォーマットするにはどうすればよいですか?
XMLStreamConstants.PROCESSING_INSTRUCTION
StAX を使用して、 ( javadoc ) イベントを処理してそれを読み取りたいのですが、次の2 つのメソッドしか提供されていませんXMLStreamReader
。
これら 2 つのメソッドのjavadocはあまり役に立ちません。
- XML フォーマットは正しいですか?
- これは、StAX
XMLStreamReader
API を使用して処理命令を解析する適切な方法ですか? getPITarget()
and を使用しgetPIData()
て複数の引数を返すにはどうすればよいですか?
java - 標準の JDK 1.6 API を除く Google App Engine の背後にあるロジック (ある場合)
以下のように、GAE は JDK 1.6 クラスのサブセットを選択したようです。
Google App Engine JDK ホワイト リスト
データ バインディング、リフレクション、クラスのロード、および注釈を処理する最も一般的な Java ライブラリを使用すると、いたるところでクラス リンケージ エラーが発生するため、これは非常に残念です。一部の省略は非推奨またはレガシーのものである可能性がありますが、そうでないものもあります。私の具体的な懸念は、長い遅延の後に JDK 1.6 に追加されたばかりのストリーミング プル パーサー (javax.xml.stream.*) です (API は JDK 1.4 とほぼ同時に完成しました)。これを省略すると、スケーラブルで高性能な xml 処理を行うことが難しくなります。
私が理解している問題は、クラスが欠落しているだけでなく、セキュリティ上の制約のためにクラスを追加することさえできないということです。
つまり、これはおそらく GAE 開発者だけが確実に答えることができる自由回答の哲学的質問ですが、なぜ一部の API が標準の JDK 1.6 から削除されているように見えますか?
更新:
簡単なメモ: 回答ありがとうございます。価値があるのは、javax.xml.streamを含めないこととセキュリティがどのように関係があるのか 本当にわかりません。セキュリティの側面は、他の非常に多くのことに関連しています(たとえば、スレッドは必要ありません。スレッドが存在しない理由を確認できます)ので、定型的な答えは理解できます。これには当てはまりません。
Stax API は、大声で叫ぶためのインターフェイスとアブストラクトのセットにすぎません。しかし、より重要なことは、SAX、DOM、および JAXP インターフェースを含めるのとまったく同じ影響を与えることです。これらは既に含まれています。
しかし、この問題は Google 開発者の注目を集めているようです:
したがって、これと同様の問題が迅速に解決されることを願っています。
java - Java NIO チャネルからの StAX 解析
Java NIO チャネルを介して XML イベントのストリームを受信しようとしています。私はNIOとStAXの両方の解析に慣れていないので、何かを見落としがちです:)
検索の結果、いくつかの SAX および StAX の実装にたどり着きましたが、それらはすべて、NIO チャネルではなく、InputStreams および InputSources で動作するようです。私が行った 2 つの最も近い試みは、チャネルから InputStream を取得し、PipedInputStream を作成することです。
に続く:
上記のコードを方法 1 で使用すると、createXMLStreamReader 行でブロックされます。メソッド 2/3 が使用されると、すぐに IllegalBlockingModeException がスローされます (理由は理解しています)。新しいアプローチが必要かも?
私の目標は、非ブロッキングサーバーを選択する=>クライアントから文字データを受け入れる=>特定のエンコーディングを使用してXMLイベントに解析する=>そのイベントオブジェクトを別のスレッドに転送して処理する=>選択に戻ることです。
だから私は何かを見落としていますか、それとも使用できるより良いアプローチがありますか? もしそうなら何?
ありがとう!
java - XMLEventWriter を使用した自己終了タグ
したがって、質問はタイトルに記載されているとおりです。私はいくつかのxml作業を行っており、XMLEventWriterを使用しています。私が抱えている大きな問題は、いくつかの自己終了タグを作成する必要があることです
問題は、eventWriter でこれを行う方法がわからなかったことです。XMLEventFactory を使用して考えられることはすべて試しましたが、何もうまくいかないようです。どんな助けでも大歓迎です。