1

/myfolder の 100 個のサブフォルダーに 1500 個の xhtml ページがあるとします。悪い星座を見つけたい

<goodTag>
 ....
 <evilTag/>
 ....
 <evilTag/>
 ....
</goodTag>

私の現在の場合、許可されているのは

<goodTag>
....
<evilTag/>
...
</goodTag>

良いタグ内の 2 つの悪いタグではありません。これはほんの一例です。時々、次のようなものを検索する必要があります

<outter>
....
<someTag someAttribute="iDoEvil" />
...
</outter>

私はしばらくブラウジングしてきましたが、それを行うのに役立つツールを見つけることができませんでした. Windows で利用できるフリー ウェア/オープン ソース ソリューションは何ですか?

xhtml ファイルはどのようなものですか? 基本的には、JSF 用に作成された Web ページです。私たちは独自のタグを使用し、それらに変更を加え続けているため、考えられていない悪い星座に注意を払う必要があります

私は最終的に正規表現でそれをやってしまったので、基本的に尋ねています。

4

2 に答える 2

1

これはbash解決策です:

  • 現在のディレクトリにあるすべてのxmlファイルを見つける
  • 含むすべてのxmlファイルをリストします<someTag someAttribute="iDoEvil" />

for i in `find . -name '*.xml'`
do
    if xmlstarlet sel -H -t -m '//someTag[@someAttribute="iDoEvil"]' -v @someAttribute "$i" >/dev/null
    then
        echo "$i"
    fi
done

注:DOS Windows でスクリプトを作成しようとしたことはありませんが、考え方は同じです。(Windows版)はこちらから
ダウンロードできます。xmlstarlet

于 2012-03-02T14:30:25.013 に答える
0

独自の Java プログラムを作成する場合は、apache commons IOjOOXを組み合わせて使用​​できます。

// Use apache commons to recurse into your file structure:
for (File file : FileUtils.listFiles(yourDir, new String[] { ".xml" }, true)) {

    // Use jOOX to parse the file and match the "bad" combination with XPath:
    if ($(file).xpath("//goodTag[count(.//evilTag) > 1]").size() > 0) {
        System.out.println("Match : " + file);
    }
}

独自のプログラムを作成する準備ができていない場合は、おそらくSuperUserがこの質問に適したサイトになる可能性があることに注意してください...

于 2012-03-02T13:49:49.253 に答える