9

できればJavaにはどのようなオプションがありますか?

XPathをオブジェクトに拡張するJXPathを見てきました。他に何かありますか?

編集:ツリークエリ言語とは、ツリーに編成されたオブジェクトに(任意のプロパティで)一致する式を作成できる言語を意味します。

Edit2:例:

これらのオブジェクトのツリーがあるとしましょう。

public interface Node {
  String getName();
  int getValue();
  String getSomeOtherAttribute();
  List<Node> getChildren();
  Node getParent();
}

ここで、これらの階層を想像してください。私が探しているのは、このツリーのインスタンスを照会できるものです。たとえば、「名前が「bar」で、値が100未満で、親が「foo」で、親の親が「joe」であるすべてのNodeインスタンスを教えてください。これはすべて、簡潔な言語で行われます。

私が言ったように、JXPathは1つのオプションです。他の人を探しています。見つかりませんでした。

ところで、JXPathクエリは「// joe / foo / bar [@value <100]」(またはそのようなもの)のように見えると思います

someroot
    |
   joe
 / | \
c  d  foo
     / \
    f   bar,99   
4

1 に答える 1

1

自分で作成したツリー構造には、 Visitorパターンを適用できます。ノードに訪問者を受け入れさせ、基準をチェックしてオブジェクトを収集するすべての種類の訪問者を記述させます。

また、Visitorを使用すると、文字列内のクエリではなく、コードがタイプセーフになります。また、getterメソッドの名前を変更すると、IDEはすべてのVisitorでそれらの名前を変更し、コードは引き続き機能します。クエリが文字列内にある場合、破損する可能性があります。

JXPathとは別に、オブジェクトのクエリにSQLのような言語を使用するJoQLがありますが、実際にはツリー型の構造用には作成されていません。

于 2012-04-05T16:09:19.137 に答える