2015-03-25 2 views
0

Я хочу проанализировать HTML-код и получить результат в виде строки. Учитывая, что Body Outer Html содержит еще одну строку HTML, я хочу, чтобы внутренний Html отображался как строка String.Как разобрать 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, в котором, если я вход что-то, он возвращает HTML ПРЕДСТАВЛЕНИЯ для этого входа на делая getText, первая строка Html выше - это только представление.

Также выходная строка должна быть такой же, как при запуске первой строки здесь (http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic)

Пожалуйста, помогите мне с этим.

+0

Интересный вопрос. –

ответ

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)); 

Exemple: стереосистеме и обновите http://rextester.com/JTOJ89529

+1

Я сейчас редактировал свой вопрос. Теперь, если вы попробуете это первое заявление здесь (http://www.w3schools.com/html/tryit.asp?filename=tryhtml_basic_document) , тогда вы получите что-то вроде второго утверждения. Мне нужно что-то подобное. На самом деле я использую редактор HTML, в котором, если я что-то ввожу, он возвращает представление HTML для этого ввода при выполнении getText. Я хочу проанализировать его и получить исходный контент. – saurabh

+0

Просто замените char перед применением regex: tst = tst.replaceAll («<», «<»). ReplaceAll («>», «>»); Я отредактировал ответ и пример, выполняемый согласно. – Vyncent