2017-10-06 75 views
1

假設我在該文件夾中有一組文本.html文件。使用CMD或JavaScript批量查找和刪除HTML文件的部分

我需要處理每個文件並刪除特定HTML標記的內容,包括標記本身。處理後必須重寫文件。

例子:

  1. 刪除所有<script>
  2. 刪除所有<div class="test-class">塊包括內部內容

正則表達式的工具,如sed -i -e 's/REGEX//g' *.html不利於HTML處理。所以我正在尋找解決方案,主要基於例如在XPATH上的HTML解析,如//script,//div[@class="test-class"]

完成此操作的最佳方法是什麼?

+0

我建議使用XML/HTML解析器(xmlstarlet,xmllint ...)。 – Cyrus

+0

如果你[編輯]你的問題包括一個簡明,可測試的樣本輸入和預期輸出的例子,那麼我希望你能得到幫助。 –

回答

2

編輯在當前目錄下的所有.html文件與xmlstarlet:

xmlstarlet edit --inplace --omit-decl --delete '//script' --delete '//div[@class="test-class"]' *.html 

參見:xmlstarlet edit --help

這可能與一個破碎的HTML文件幫助:

xmlstarlet format --recover --html file.html |\ 
    xmlstarlet edit --omit-decl --delete '//script' --delete '//div[@class="test-class"]' > new.html 
+0

謝謝@Cyrus。但是'xmlstarlet'的問題在於它對html格式非常敏感,並且會產生像'打開和結束標籤不匹配','找不到開始標籤html結尾'等錯誤。它沒有任何內置的html規範化工具,我沒有看到如何格式化HTML文件,然後再將它們傳遞給xmlstarlet。 –

+0

@AlexDasata在將它們傳遞給xmlstarlet之前,您可以先通過HTML Tidy http://www.html-tidy.org/ https://github.com/htacg/tidy-html5運行文件 – sideshowbarker

+0

@AlexDasata:我已更新我的答案。 – Cyrus