問題タブ [dom4j]

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.

0 投票する
2 に答える
977 参照

java - dom4jでXMLパスを指定

dom4j を使用して大きな xml ファイルを解析したいと考えています。気にしない要素を無視するためのパス式のイベント ハンドラーを登録できる dom4j の機能を使用しています。この機能については、http: //dom4j.sourceforge.net/dom4j-1.6.1/faq.html#large-docで説明されています。

私はそこから引用します:パスの終了タグが見つかった場合、そのパスに登録されているハンドラの onEnd メソッドが呼び出されます。

onStart メソッドと onEnd メソッドには ElementPath のインスタンスが渡されます。これを使用して、指定されたパスの現在の Element を取得できます。ハンドラがメモリの使用を節約するために構築中のツリーを「剪定」したい場合は、ハンドラの onEnd() メソッドで処理中の現在の Element の detach() メソッドを呼び出すだけです。」

私の問題は、ルートノードのすべての子が2つのメソッドによって処理されるように、どのパスを指定すればよいかわからないことです。

私のxmlファイルは次のようなものです:

パスよりもシェフの要素を処理したい場合は、/root/chef になります。レシピ要素の場合、パスは /root/recipe になります。

しかし、dom4j が (onStart()、onEnd() で) シェフとレシピの両方の要素を処理できるようにするには、dom4j に与える必要があるパスは何ですか?

どうもありがとう!

0 投票する
1 に答える
861 参照

java - Android 1.5 および dom4j - 属性名が正しく解析されない

私は Android 1.5 のアプリケーションに取り組んでいます。現在、XML ファイルを解析する必要があります。Android は API レベル 3 で XPath をネイティブにサポートしていないため、dom4j および jaxen ライブラリを使用してファイルを読み取ることにしました。

私は単純な XML ファイル (test1.xml) を持っています:

そして簡単なコード:

test1.xml ファイルを読み取り、「/tests/test」ノードを見つけて、その属性を列挙します。このコードを「デスクトップ」Java アプリケーションの一部として実行すると (私は Java 用語に詳しくありません)、期待どおりに表示されます (Fedora Linux での OpenJDK 1.8.3):

残念ながら、Android 1.5 (emulator ofc) では、まったく同じコードが表示されます。

ご覧のとおり、属性の値は問題ありませんが、名前に問題があります。なぜこの場所に他の DOM 要素 (「/tests/resources」) の属性名が表示されるのか、まったくわかりません。私のファイルを正しく解析していないようなので、おそらく何か間違った設定をしています...

もちろん、どちらのバージョンも dom4j および jaxen ライブラリでまったく同じ .jar を使用するため、おそらくこれで問題ありません。

この問題は、誤った属性のリストだけでなく、より多くの影響を及ぼします。また、XPath を使用して属性を適切に読み取ることもできません。「/tests/test/@name」を選択すると何も返されませんが、「/tests/test/@base_lang」を選択すると「メイン名」文字列が返されます。これは明らかに、上記の属性のリストと同じエラーが原因です。

誰もこれに遭遇しましたか?どうすれば修正できますか?

残念ながら、ネイティブ XPath サポートを備えた新しい Android に移行することは、私にとって選択肢ではありません。

私はウェブとここで何かを見つけようとしていましたが、運がありませんでした.

0 投票する
2 に答える
4083 参照

xsd - dom4j DOMDocument を使用して validator.validate(DOMSource) をフィードすると、Java 1.6 で失敗し (xsi:noNamespaceSchemaLocation は許可されません)、1.5 で機能します。

dom4j DOMDocument を使用して validator.validate(DOMSource) をフィードすると Java 1.6 で失敗し (xsi:noNamespaceSchemaLocation をルート要素に表示することは許可されていません)、1.5 で機能します。

次の問題は非常に扱いにくいと思います(OK、それは控えめな表現です)-洞察をいただければ幸いです。現在、XOM (http://stackoverflow.com/questions/831865/what-java-xml-library-do-you-recommend-to-replace-dom4j) などを優先して dom4j を削除するのが最善の方法のようです。

dom4j 'new DOMDocument()' から作成された XML をメモリ内で検証してきましたが、これは Java 6 では機能しません。

次の dom4j (1.6.1) DOMDocument 派生 DOMSource の validate(source) の呼び出しは、Java 1.5.x では機能しますが、Java 1.6.x では失敗します。

getSchemaURLString() は、xsi:noNamespaceSchemaLocation 属性をルート ノードに追加するためにも使用されます。

例外は次のとおりです。

これが XML の始まりです - validator.validate(source) への呼び出しを無効にした後に生成されます。

そしてXSDの:

xsi:noNamespaceSchemaLocation 属性が含まれているため、私のルート要素は拒否されています。そして、スキーマ自体はそれをルート要素の有効な属性として指定していませんか?

この時点で、このタスクのために dom4j をあきらめて、他のソリューションの 1 つに切り替える必要があるように思えます。

しかし、とにかく私が間違ったことを知りたいです!

前もって感謝します。

0 投票する
1 に答える
4771 参照

java - DOM4Jドキュメントのエンコーディングを変更:UTFをISO-8859-1(Java)に変更

作成する必要がありますorg.dom4j.Documentが、印刷すると常にUTF-8です。

に変更したいのですISO-8859-1が、方法がわかりませんでした。使用することはできず.setEncoding()、ドキュメントはその場で作成されます(からの読み取りではありませんInputStream)。

これは、 http://www.coderanch.com/t/127978/XML/change-Encoding-Domで説明されているのと同じ問題です。

どうもありがとう!

0 投票する
1 に答える
330 参照

hibernate - Hibernate: "embed-xml=false" を使用して実行時に埋め込み xml をロードする方法

embed-xml=true の場合、embed xml データがロードされます。動的にembed-xmlをtrueとして変更することで、埋め込みデータをロードすることは可能ですか? マッピング ファイルでマッピングを false として定義したい。通常、埋め込みデータは必要ないため、ほとんどの場合、多くの db 呼び出しはありません。一部のシナリオでは、埋め込みデータをオンデマンドで読み込みます。これは、同じエンティティに対して 2 つのマッピング定義を作成することで実行できます。より良いアプローチはありますか?

0 投票する
1 に答える
276 参照

java - 次のJavaメソッドの何が問題になっていますか?

ここでJavascript関数を翻訳しようとしています。

これにより、org.w3c.dom.DOMElementを指定して基本的なxpath文字列が生成されます。/html/body/p[3]/a

getElementXpathgetElementIdx()関数と条件をコメントアウトすると正常に動作します。問題はにあるようですがgetElementIdx()、何が間違っているのかわかりません。以下のJavaコードはJavascriptバージョンとほぼ同じです。

何が起こるかというと、空の文字列が返されます!getElementXpath関数内のパスを印刷してみましたが、悪意はありませんでした。期待される出力は、基本的なxpath文字列です。

アップデート:

forループの外側でパスが出力されないのはなぜですか?

0 投票する
2 に答える
4640 参照

xml - DOM4J:属性値でフィルタリングするノードの値を取得します

私はこのように構造化された与えられたxmlを持っています:

SAXReader(DOM4J)を使用して、id = 1(例では「aaa」)のノードに含まれる値を取得するにはどうすればよいですか?

私はこれを試しました:

ここで、elemは正しい「path.current」ですが、機能しませんでした。

おそらく私は間違った構文で条件を書いています..提案?

0 投票する
1 に答える
325 参照

java - org.dom4j.io.SAXReaderによって解析されたxmlドキュメントを視覚的なSwingツリーに変換する方法は?

org.dom4j.io.SAXReaderを使用してxmlドキュメントを解析しましたが、これをjavax.swing.tree.TreeModelにフィードして、動的に変化するビジュアルSwing JTreeを生成することは可能ですか?

たとえば、プログラムでノードを追加または削除する場合、SwingJTreeに変更をすぐに反映させたいと思います

どうすればこれを達成できますか?また、dom4jを使用するためのより良い提案はありますか?

0 投票する
1 に答える
732 参照

java - dom4jxmlをSwingJtreeに変換する方法は?

dom4jを使用してxmlを解析しています。次に、このxmlをJtreeとして表現できるようにします。プログラムでdom4jを介してノードを追加または削除するときはいつでも、変更がJtreeにすぐに反映されるようにします。Jtreeノードをクリックすると、イベントをキャッチするにはどうすればよいですか?

私はhttp://dom4j.sourceforge.net/apidocs/でdom4j.swingパッケージを発見しました

しかし、それをどうやって使うのかわかりません。どちらを使うべきかわかりません。この領域の例やチュートリアルが見つからないようです。

BranchTreeNode、DocumentTreeModel、LeafTreeNode。

0 投票する
1 に答える
1312 参照

java - org.dom4j.Documentのパラメーターとしてorg.w3c.dom.Elementオブジェクトで検索(org.w3c.dom.Elementをorg.dom4j.Elementに変換)

org.w3c.dom.Document解析しましたorg.dom4j.io.DOMReader

でdom4jDOMドキュメントを検索したいorg.w3c.dom.Element

たとえば、dom4jドキュメントで見つける必要のあるorg.w3c.dom.Elementがあります。org.w3c.dom.Elementオブジェクトをパラメータとして持つことを除いて、要素情報はありません。

doc.findByDomElement(org.w3c.dom.Element element)を返すdom4jのようなものが必要ですorg.dom4j.Element