以前に Apache ダイジェスターを使用したことがあり、xml タグのブランチ ベースの検索が大好きでした。タグを h\a\b\ として指定するのは非常に直感的です。
今、私はxmlフィルタリングプロジェクトをやりたいのですが、基礎となるxmlタグにアクセスする方法がないという理由だけで、apache digesterはうまくいかないようです。faq が言うように:
タグ内にネストされた xml をリテラル文字列として取得するにはどうすればよいですか?
ドキュメント内にネストされた XML (特に XHTML) を文字列として抽出する方法についてよく質問されます。たとえば、以下の「body」タグの内容を文字列として抽出する場合などです。
...いくつかのxmlコード...
上記を変更して、目的のテキストを CDATA セクションとしてラップすることができれば、作業は簡単です。Digester は単純にその CDATA ブロックを単一の文字列として扱います。
...いくつかのxmlコード...
これができない場合は、NodeCreateRule を使用して body タグとその子を表す DOM ノードを作成し、その DOM ノードをシリアライズしてテキストに戻す必要があります。
Digester は標準 XML パーサーの単なるレイヤーであり、標準 XML パーサーには特定の要素で入力の解析を停止するオプションがないことに注意してください。ただし、その要素の内容が文字のブロック (CDATA) であることがわかっている場合を除きます。
xml をフィルター処理するために使用できる同じパターン システムを使用するものがあったとしたら? 私の考えは、ユーザーから提供されたパターンを使用してブラックリストに登録し、他のすべてをコピーすることです。
または、Apache Digester (表示されたテキストだけでなく、xml 上の場所) で一致する場所を見つける方法があるかもしれません。他のテキストのコピーを保持し、一致をスキップすることで、他のテキストをコピーするだけで十分です。
編集:XPathはこれを行うのにほとんど問題ないように見えますが、見つけたすべてのアプリケーションは何かを削除するのではなく、選択するためのものでした。これの例はありますか?