Начало метода addltem (NewsUpKeep.java)
Листинг 8.29. Начало метода addltem (NewsUpKeep.java)
// items are always added at the top of the file // so we have to rebuild the start of the root element public void addItem( String head, String date, String topics, String author, String shrtStr, String longStr ) throws IOException { String idVal = "" ; String tmpfile = newsFileName + "$$" ; File f = new File( tmpfile );
FileWriter fw = new FileWriter(f);
PrintWriter out = new PrintWriter( new BufferedWriter( fw ) );
out.println("<?xml version=\"1.0\" standalone=\"yes\" ?>
");
out.println("<!-- output by NewsUpkeep -->
");
int ct = rootNNM.getLength();
if( ct == 0 ){ out.println("<Newsfile>
");
} else { out.print("<Newsfile ");
for( int i = 0 ; i < ct ; i++ ){ Node an = rootNNM.item(i);
String name = an.getNodeName();
String val = an.getNodeValue();
out.print( name + "=\"" );
if( name.equals("nextid") ){ idVal = val ; val = incrementID( val );
} out.print( val + "\" ");
} out.println(" >
");
}
Затем, как показано в листинге 8.30, пишется новый тег <NewsItem>
, за которым следует заголовок сообщения, указывается дата и приводятся краткая и полная версии текста сообщения. Для того чтобы записать старые элементы <NewsItan>
, вызывается метод writeNewsNode. После закрытия временного файла старый файл XML удаляется, а временный файл получает имя. Следующий раз, когда этот файл будет запрошен, класс DOMIibrary по изменившейся метке даты модификации файла (timestamp) определит, что нужно считывать новый файл.
Содержание раздела