Spring Bean Factory XML — Dasel v3 クエリパターン
<when_to_use>
このスキルは、Spring Bean XMLファイル — applicationContext.xml, *_beans.xml, spring-context.xml, または任意のSpring ApplicationContext XML — に対して、Bean発見、依存性分析、JMS配線、プロパティインジェクション監査、クロスBean参照追跡を行う際にロードしてください。
</when_to_use>
Spring Bean Factory XML向けのDasel v3セレクターパターン。常に -i xml を明示的に指定してください。
属性プレフィックスルール: Daselのフレンドリーモード(デフォルト)では、XML属性に - プレフィックスが付与されます。id 属性は -id、class は -class になります。テキストコンテンツは #text です。
Bean発見
# すべてのBean ID
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")'
# すべてのBeanクラス
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-class")).map("-class")'
# すべてのBeanに -class をマッピング(-id がないBeanも含む)
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.map("-class")'
クラスパターンマッチング
-class に対する正規表現でBeanをクラス名でフィルタリングします。
# クラス名にJmsTemplateを含むBean
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(-class ~ ".*JmsTemplate.*").map("-id")'
# クラスパターンに一致するBeanの数をカウント
cat beans.xml | dasel -i xml 'len(beans.bean.filter(-class ~ ".*Jms.*"))'
依存性配線分析
property 子要素の -ref 属性を介して他のBeanを参照しているBeanを見つけます。
パターン: 親コレクション.filter(子要素.filter(条件).len($this) > 0) — 条件を満たす子要素が存在するかどうか(長さ > 0)をテストすることで親をフィルタリングします。
# ref属性を介して特定のBean IDを参照しているBean
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-ref == "targetBeanId").len($this) > 0).map("-id")'
JMS宛先マッピング
property 子要素を介して、どのBeanがどのJMS宛先を消費しているかを特定します。
# 特定の宛先プロパティに配線されたBean
cat integrationpoint_beans.xml | dasel -i xml 'beans.bean.filter(property.filter(-name == "destination").len($this) > 0).map("-id")'
プロパティインジェクション抽出
Bean定義から外部化された ${...} プレースホルダー値を抽出します。
# ${...} プレースホルダーを使用しているすべてのプロパティ値
cat storage_beans.xml | dasel -i xml 'beans.bean.property.filter(-value ~ ".*\\$\\{.*\\}.*").map("-value")'
属性とテキストコンテンツへのアクセス
# <bean id="myBean" class="com.example.Foo">some text</bean>
cat beans.xml | dasel -i xml 'beans.bean[0].-id' # myBean
cat beans.xml | dasel -i xml 'beans.bean[0].-class' # com.example.Foo
cat beans.xml | dasel -i xml 'beans.bean[0].#text' # some text
# 最初のBean上のすべてのキー(属性 + 子要素)を検出
cat beans.xml | dasel -i xml 'beans.bean[0].keys($this)'
名前空間処理
フレンドリーモードでは、要素名から名前空間プレフィックスが除去されます — ほとんどのSpringクエリで機能します。
名前空間プレフィックスがセレクターの失敗を引き起こす場合(要素が存在するにもかかわらず見つからない場合)、構造化モードに切り替えてください:
cat spring-context.xml | dasel -i xml --read-flag xml-mode=structured 'beans.bean[0]'
ファイル間分析
中間結果は /tmp/ に書き込んでください — ソースツリーには決して書き込まないでください。
# 複数のファイルからBean IDを抽出し、比較
cat chaosrouter_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")' > /tmp/chaosrouter_beans.txt
cat integrationpoint_beans.xml | dasel -i xml 'beans.bean.filter(has("-id")).map("-id")' > /tmp/integration_beans.txt
diff /tmp/chaosrouter_beans.txt /tmp/integration_beans.txt