2015-03-25 77 views
0

我想解析Html并以字符串形式获取结果。 鉴于外部HTML的主体包含另一个Html字符串,我想要内部Html作为输出字符串。如何解析Html并使用Java将结果作为字符串获取

例子>输入HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head></head><body><p>&lt;!DOCTYPE html&gt;<br />&lt;html&gt;<br />&lt;body&gt;<br /><br />&lt;h1&gt;My First Heading&lt;/h1&gt;<br /><br />&lt;p&gt;My first paragraph.&lt;/p&gt;<br /><br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br /></p></body></html> 

输出字符串:

<!DOCTYPE html><html><body><h1>My First Heading</h1><p>My first paragraph.</p></body></html> 

重要:我使用,其中,如果我输入的东西,它返回的HTML represantation该输入上的HTML编辑器做getText,上面的第一个Html字符串只是表示。

而且输出字符串应该是一样的,当我在这里(http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic)运行的第一个字符串

请帮助我。

+0

有趣的问题。 – 2015-03-25 13:33:24

回答

1

我会去一些正则表达式:

(<!DOCTYPE html>).*(<html>.*</html>).+ 

而且考虑第1组和第2组,

tst = tst.replaceAll("<", "<").replaceAll(">",">"); 
    Pattern p = Pattern.compile("(<!DOCTYPE html>).*(<html>.*</html>).*</html>.*"); 
    Matcher m = p.matcher(tst); 
    m.find(); 
    System.out.println(m.group(1) + m.group(2)); 

为例捉迷藏: http://rextester.com/JTOJ89529

+1

我刚刚编辑了我的问题。 现在,如果您尝试第一条语句(http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic_document) ,那么您将得到类似于第二条语句的内容。 我需要那样的东西。 其实我正在使用一个HTML编辑器,其中如果我输入了一些东西,它会返回该输入在执行getText时的HTML represantation。我想解析它并获取原始内容。 – saurabh 2015-03-25 11:42:30

+0

只需在应用正则表达式之前替换char:tst = tst.replaceAll(“<”,“<”)。replaceAll(“>”,“>”);我编辑了响应和示例运行。 – Vyncent 2015-03-25 11:48:02