問題タブ [jaxp]
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 - Java (JAXP) XML 解析の DocumentBuilder の相違点
間に何か違いはありますか
DocumentBuilder.parse(InputStream)
とDocumentBuilder.parse(InputSource)
?
最初のケースでは、パーサーがストリームからエンコーディングを検出するため、より安全であることがわかりましたが、後者では、エンコーディングを設定する必要があるかどうかはわかりません。
他に注意すべき点 (パフォーマンスなど) はありますか?
java - Java は StAX を使用して、一般的な方法で子要素を取得します
StAX を使用しようとしています (もう嫌いです....)
それを使用する唯一の方法は、if-else 条件を連続して使用することです。
しかし、最も重要なことは、解析される xml ドキュメントの構造を事前に知っていない限り、要素をその子に関連付ける方法がないように思われることです.これは正しいですか?
私は次のことを試しました:私はこのxmlを文字列に持っています
StAX を使用して Book 要素を取得したいのですが、すべての構造をハードコーディングしたコードしか記述できないようです。
つまり、XMLEventReader を使用し、Book を取得したら、Data、Author などのループを開始
します。これに関する一般的な解決策はありますか?
これを回避するために次のことを試しました: String から XMLEventReader に移動して String に戻ろうとしましたが、最初に使用した正確な String 表現を取得できません (名前空間は角かっこ、余分なコロンなどで囲まれています)。
私は以下を取得します:
このケースは StAX または DOM で解決できますか?
java - トランスインスタンス(jaxp)でのJavaエラーリスナーの使用
のメソッド transform の署名Transformer
は、void transform(Source xmlSource,Result outputTarget)throws TransformerException
つまり、TransformerException タイプのチェック済み例外をスローすることを指定します。どのように適合
するか理解できません。オブジェクトに設定されている
場合、これは例外がスローされないことを意味しますか?
とにかくスローされた場合、ErrorListener はどのように役立ちますか?ErrorListener
ErrorListener
Transform
ありがとう
java - カスタムJavaXMLBuilderと標準クラスベース
XML生成のための最高のパフォーマンスソリューションは何ですか。
私の目標は、コードからいくつかの単純なXMLを構築することです。XMLBuilderの単純なカスタムStringBufferベースの実装を実装します。反対側からは、http://code.google.com/p/java-xmlbuilder/やhttp://code.google.com/p/xmltool/のようないくつかのライブラリがあります。これらは優れたDSLを備えていますが、パフォーマンスが不足していると思います。
私の目標は、優れたパフォーマンスを備えた十分に単純なXMLBuilderを構築することなので、カスタムソリューションを構築すると思います。それは特徴とします:
- XML構造用の優れたJavaベースのDSL(基本的にタグの追加)
- 優れたStringBufferベースのパフォーマンス。
- XMLタグを追加するときの文字列データエスケープ処理。
- 自動インデント
パフォーマンスの期待が間違っているかどうか、そしておそらく既製のライブラリを使用する方が良いかどうかを提案してください。
アップデート。標準のxmlビルダーのパフォーマンスがあまり良くないと思う理由。
標準のXMLビルダーはDocumentBuilderFactoryを使用し、舞台裏でクラスを操作します。また、これらのクラスはすべてのユーザーに合うように最適化されています。たとえば、名前空間のサポートなどは必要ありません。
上記の非常に単純なXMLコードについて考えてみます。標準ツールを使用してビルドする場合、この単純なXMLを作成するためだけに非常に多くの作業が必要になります。Stringを使って自分で生成したほうがいいと思います。
更新2。パフォーマンス要件は、コードが単純なXMLを生成するために必要なだけ多くのことを実行する必要があることです。
更新3.素晴らしいコメントをありがとうございました!これで、必要なものがよくわかり、最初の目標が「パフォーマンス」という言葉で正しく設定されていなかったことがわかりました。私の本当の目標は、便利なDSLを備えたシンプルで十分なソリューションを使用して、XML構造を記述し、XML出力を生成することです。
XMLのDSLとしてプレーンJavaオブジェクトを使用し、非常に簡単なソリューションであるXStreamライブラリを使用してXMLを生成します。
更新4。JAXB。XStreamとJAXBについて説明したところ、JAXBの方がXStreamよりも高速であることがわかりました。さらに、プロジェクトですでにJAXBを使用しており、その標準のアノテーションが気に入っています。XStreamは、JAXBが今日ほど良くなかったときに元々大幅に開発されていたため、考えを変えて、今はJAXBを使用します。
java - Java/XSD 解析
このようなものがあるかどうかは疑問ですが、質問することを考えまし
た.xsdファイルを読み取り、コードで使用する文字列形式などで定義された要素を「作成」するライブラリがJavaにあるかどうか知っている人はいますか?
たとえば、次のスキーマを読みます。
また、次の形式の文字列があります。
自動ツールも同様の処理を行います。つまり、WSDL を解析し、タイプ セクションから、スキーマで定義された要素のインスタンスとなる JAXB クラスなどを作成します。
これを行うライブラリはありますか?
更新:
たとえば、Eclipse で Web アプリケーションの xml 記述子を作成すると、ユーザーがスキーマに従って入力する必要があるすべての要素を含むツリー テーブルが表示されます。どうやってやっているの?彼らはjarに含まれるxsdsを解析していると思います
。どんな入力でも大歓迎です。
ありがとうございました!
java - JAXP で XPath を使用して XML ノードとノード属性の値を取得する
次のような xml ドキュメントがあるとします。
「キー」属性と要素の値を出力したいので、次のようになります。
このコードを使用して、ノードの値を問題なく出力できます。
そして、次のように xpath 式とノード メソッドを変更することで、「キー」属性の値を出力できます。
単一の でこれらの値の両方を取得する方法があるようevaluate
です。常に 2 つの NodeList を評価し、共通のインデックスを使用してそれらを反復処理できますが、それらが同じ順序で返されることが保証されているかどうかはわかりません。任意の提案をいただければ幸いです。
java - エレメントの入手方法とJre のデフォルト プロセッサ (JAXPSAXProcessor) を使用した XPath で
および/またはタグを含むいくつかのxmlファイルを使用しています。それらをhtmlに変換したい。私の XSL では、2 つのテンプレートを使用しています
Xalan をプロセッサーとして使用している場合は機能しますが、JAXPSAXProcessor を使用している場合はエラーが発生します: ERROR [main] JAXPSAXProcessorInvoker - Syntax error in 'or'. ERROR [main] JAXPSAXProcessorInvoker - 「and」の構文エラー。
JaxPSaxProcessor は Xpath の演算子に変換および/または変換すると思います。 jaxb プロセッサは多くの場所で使用されているため変更できません。問題を解決するための他の提案はありますか?
java - xmlデータベースファイルを効率的に書く方法は?
XMLファイルをデータストアとして作成したい。次のようになります。
実行時に、データストアにアイテムを追加する必要がある場合があります。アイテムの数が多い可能性があるため、ドキュメント全体をメモリに保持したくなく、DOMを使用できません。変化が起こる部分を書きたいだけです。または、DOMはこれをサポートしていますか?
私はStAXを最初に見ましたが、それが私が望むことをするかどうかはわかりません。
ルート要素が閉じられる直前のファイルの最後にあるカーソル位置を覚えておくのが最善ではないでしょうか。それは常に新しいアイテムが追加される位置です。したがって、その位置を覚えていて、変更中に最新の状態に保つと、ファイル全体を繰り返すことなく、最後に新しいアイテムを追加できます。
たぶん、2番目のカーソルは、最初のカーソルから独立して使用して、読む目的でドキュメントを反復処理することができます。
StAXがこれをサポートしていることがわかりませんね。
ストリームベースのAPIではなく、ファイル用のブロックベースのAPIはありませんか?ファイルとファイルシステムは、ブロック「デバイス」の典型的な例ではありませんか?そして、そのようなAPIがある場合、それは私の問題を解決するのに役立ちますか?
前もって感謝します。
dom - DOMを介してxmlドキュメントにスキーマロケーションを挿入する方法
JAXPを使用してxmlドキュメントを作成し、スキーマロケーションを挿入する方法を検索します。現時点では、私のアプリケーションは以下を生成します。
しかし、私は必要です:
私のコード:
お時間をいただきありがとうございます、
Kasten