2013-12-19 60 views
0

我擴展了類HTMLEditorKit.ParserCallback以獲取html文件的標記,註釋和相應行號。包含腳本標記和LineNumberReader的Java HTML解析器

FileReader inputStreamReader = new FileReader(modelFile); 
lineNumberReader = new LineNumberReader(inputStreamReader); 
delegator.parse(lineNumberReader, this, true); 

通常情況下它的工作原理,但如果HTML文檔包含腳本標籤,handleError()被稱爲與錯誤信息javascript.unsupported ? ? ?。 到目前爲止,我得到腳本標記的內容作爲註釋,但行號讀取器返回行號碼</html>;而不是</script>

如何才能獲得正確的行號?

實例文檔:

<html> 
    <head> 
    </head> 
    <body> 
     <script language="javascript"> 
      int a; 
      function abc() { 
      } 
     </script> 
    </body> 
</html> 

感謝, 邁克爾

回答

0

派生從LineNumberReader自己ScriptPatchingReader類。

在那個類中,請注意<script然後放置一個換行符,直到</script>,用行號保存腳本主體。之後用腳本處理你想要的東西。 您可能想要存儲它是否位於<head>部分或<body>

BTW FileReader使用當前平臺編碼。如果使用像UTF-8這樣的固定編碼:

InputStreamReader inputStreamReader = new InputStreamReader(
    new FileInputStream(modelFile), "UTF-8"); 
相關問題