2015-01-16 2 views
0

Я пытаюсь использовать следующий код для редактирования html-страницы с помощью java.Как отредактировать/вставить новую строку в html-файл

package com.XXX.xxx.xxx 

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class HTMLReading { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     StringBuilder contentBuilder = new StringBuilder(); 
     try { 
      BufferedReader in = new BufferedReader(new FileReader("C:\\ItemDetails.html")); 
      String str; 
      while ((str = in.readLine()) != null) { 

       if(str.equals("<div id=\"row2\" style=\"display:none;\" ><ul>")) { 
        // add following lines to html 
        //<li><b>Comments</b></li><ul><li>Testing for comment</li></ul> 
       } 
       System.out.println(str); 
      } 
      in.close(); 
     } catch (IOException e) { 
     } 


    } 
} 

При чтении перкулярной линии я хочу вставить новую строку в html.

//<li><b>Comments</b></li><ul><li>Testing for comment</li></ul> 

Я попытался добавить, но добавляет линию в конец, а не в то место, где я хочу.

И мое требование - я должен использовать только JAVA только для этого.

Любые мысли!

+0

Пожалуйста, посмотрите здесь: http://stackoverflow.com/questions/19730996/edit-html-document-with-java – ferjani

ответ

0

Вы можете использовать метод Java.io.BufferedWriter.newLine().
Это нон статический метод, вы можете найти некоторые documantation здесь: http://www.tutorialspoint.com/java/io/bufferedwriter_newline.htm

Кроме того,
Лучше использовать StringBuffer и не только String, потому что это неизменный объект как:

StringBuffer sb = new StringBuffer(); 
sb.append ("<br>blabla<br>"); 
0

Вы могли бы попробовать что-то вроде этого:

 String str; 
     StringBuilder contentBuilder = new StringBuilder(); 
     while ((str = in.readLine()) != null) { 

      if(str.equals("<div id=\"row2\" style=\"display:none;\" ><ul>")) { 

       contentBuilder.append("add your content" + str); 
      } 
      else 
      { 
       contentBuilder.append(str); 
      } 
      System.out.println(str); 
     } 

Вы можете сохранить его в виде строки, то написать combined к й e файл над тем, что было там.

+0

Вы будете лучше с StringBuilder для 'объединенного', а не простой строки. – Rob

+0

@ brso05 Это исправление будет работать. но мой html-файл будет очень большим (содержит более 5000-10000 строк). С этим исправлением я переписываю все обратно в html. Может нанести удар. – MIM

+0

@MIM вы должны использовать StringBuilder, если это большой файл. – brso05

0

Новые строки представлены на Java как «\ n». Похоже, вы хотите, чтобы ваш StringBuilder содержал содержимое исходного файла, а также дополнительные строки, которые вы описываете. Чтобы выполнить это ваш код может выглядеть следующим образом:

public static void main(String[] args) { 

    StringBuilder contentBuilder = new StringBuilder(); 
    try (BufferedReader in = new BufferedReader(new FileReader("C:\\ItemDetails.html"))) { 
     String str; 
     while ((str = in.readLine()) != null) { 
      contentBuilder.append(str); 
      if (str.equals("<div id=\"row2\" style=\"display:none;\" ><ul>")) { 
       contentBuilder.append("\n<li><b>Comments</b></li><ul><li>Testing for comment</li></ul>\n); 
      } 
     } 
    } catch (IOException e) { 
    } 
    System.out.println(contentBuilder.toString()); 
} 
+0

Я не хочу иметь содержимое оригинального файла, а также дополнительные строки в StringBuilder. Есть ли способ, которым мы можем напрямую написать дополнительную строку для самого файла. – MIM

+0

Вы должны обновить свой вопрос, чтобы добавить сведения о том, какое поведение вы пытаетесь выполнить. Вы хотите, чтобы вы переписывали существующий файл с одной из заданных строк для каждого экземпляра строки поиска? Если да, то я не понимаю, почему вы жалуетесь, что append() добавляет вещи в конец строки ... – Shannon