StreamTokenizer,渲染一个html文件?

时间:2011-10-27 19:47:35

标签: java html regex rendering html-parsing

我正在制作HTML渲染器。我将html文件读入StreamTokenizer。目前它打印出正确的令牌,并在我的html文件中指定我的varbiles用美元包围,例如

<html><p>$myVarToBeRendered$<p></html>

我得到了正确的令牌,即它使用quoteChar('$')

分割html正文和变量
FileReader in = new FileReader(file); 
     BufferedReader reader = new BufferedReader(in); 
    StreamTokenizer tok;
    tok = new StreamTokenizer(reader);
    tok.resetSyntax();
    tok.wordChars(0, 255); 
    tok.quoteChar('$'); 

我得到了字符串标记

"<html><p>" , "myVarToBeRendered" and "<p></html>"

虽然在阅读令牌时我显然需要替换被识别为引用的myVar令牌。此myVar用作HashMap中的键,用于保存要呈现给每个变量的字符串值。有没有办法检查令牌是否是引用?像:

if (tok.next - is a quote or inside my quotes)
     Then replace this var name with its related HashMap value

我已经浏览过互联网,找不到任何示例或类似的问题来帮助我!

或者我可以使用的任何方法,以便我可以识别哪些令牌是在HashMap中使用的变量。对不起,如果这没有意义,希望你明白我在做什么!!

非常感谢Sam

1 个答案:

答案 0 :(得分:1)

可能是我误解了这个问题,但你可以通过简单地调用myMap.containsKey(myVarToBeRendered)来检查地图中是否存在你的令牌。

另外,我认为使用正则表达式模式匹配从你的html中提取替换变量似乎比使用StreamTokenizer更好。