2012-03-02 32 views
1

因此,我們有1500個xhtml頁面可以說100個/ myfolder子文件夾。我想找到的Xpath查找windows文件? xml解析器在窗口中查找文件

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

邪惡星座在我目前的情況下,只允許有一個好的標籤內

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

,而不是2邪惡的標籤。這只是一個例子。有時我必須尋找類似的東西

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

我一直在瀏覽一段時間,找不到一個能夠幫助我這麼做的工具。 在Windows中可以使用哪些免費軟件/開源解決方案?

什麼是xhtml文件?基本上他們是爲JSF創建的網頁。我們使用自己的標籤,並不斷改變他們,因此,必須保持良好的眼睛不好的星座誰也沒有想到

我基本上問,因爲我最終結束了用正則表達式,它使周圍的人變得瘋狂。

+1

哪個標籤是邪惡的?爲什麼「 kev 2012-03-02 13:37:35

+0

問題更新 – Toskan 2012-03-02 14:05:01

回答

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威力對於這個問題的一個更好的網站......

1

這是一個bash解決方案:

  • 找到當前d所有XML文件irectory
  • 列表包含<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 

注意所有XML文件:我還沒有嘗試寫在Windows DOS劇本,但這個想法是一樣的。
您可以下載xmlstarlet(windows version) here

+0

非常好。我不知道你可以用'bash'做這樣的事情 – 2012-03-02 14:33:12