Писатель XML (DOM) работает не так, как ожидалось. Он отлично работает, добавляя в него песни, используя метод addSong()
, который передает 3 строки в метод saveSong()
.переопределяет Java xml
saveSong()
сохраняет их в XML
, но когда я сохранить его в файл XML
, он пишет, что он должен делать, но перекрывает все остальное, что он ISN»т должен делать ..
I просто нужно, чтобы это было как «список», на который вы можете продолжать добавлять песни, пожалуйста, помогите!
класса Song:
public class Song {
List<String[]> songs = new ArrayList<String[]>();
public void addSong(String s, String a, String yt){
String[] songarray= new String[3];
songarray[0] = s;
songarray[1] = a;
songarray[2] = yt;
songs.add(songarray);
saveSong(songarray);
}
public void editSong(int i, String s, String a, String yt){
String[] editsongarray = new String[3];
editsongarray[0] = s;
editsongarray[1] = a;
editsongarray[2] = yt;
songs.remove(i);
songs.add(i,editsongarray);
}
public void removeSong(int i){
songs.remove(i);
}
public String[] getList(int i){
String[] j = songs.get(i);
return j;
}
public void saveSong(String[] songl){
try{
DocumentBuilderFactory song = DocumentBuilderFactory.newInstance();
DocumentBuilder songBuilder = song.newDocumentBuilder();
Document doc = songBuilder.newDocument();
Element playlist = doc.createElement("playlist");
doc.appendChild(playlist);
Element songs = doc.createElement("songs");
playlist.appendChild(songs);
Attr attr = doc.createAttribute("index");
attr.setValue("1");
playlist.setAttributeNode(attr);
Element name = doc.createElement("name");
name.appendChild(doc.createTextNode(songl[0]));
songs.appendChild(name);
Element artistname = doc.createElement("artistname");
artistname.appendChild(doc.createTextNode(songl[1]));
songs.appendChild(artistname);
Element youtubeurl = doc.createElement("youtubeurl");
youtubeurl.appendChild(doc.createTextNode(songl[2]));
songs.appendChild(youtubeurl);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer tr = tf.newTransformer();
DOMSource dom = new DOMSource(doc);
StreamResult sr = new StreamResult(new File("c:\\Applications\\staff.xml"));
tr.transform(dom, sr);
System.out.println("done");
}catch(ParserConfigurationException pce){
pce.printStackTrace();
}catch(TransformerException fce){
fce.printStackTrace();
}
}
}
Основной класс: Передает строку addSong()
, который передает их saveSong()
, который записывает их в файл XML
.
public class main {
public static void main(String[] args){
Song Song = new Song();
Song.addSong("This is", "A very good","Song");
}
}
Ну, что это было * было сделано для существующего файла? Если вы хотите изменить существующий файл (например, добавление элементов), вы должны проанализировать существующий файл, добавить все соответствующие элементы и затем сохранить его снова. # –
@JonSkeet Ya, я должен был добавить контент в существующий файл:) .. Мне нужно это, чтобы сохранить подробности песни, и загрузить их снова в музыкальный проигрыватель, который я сделал. Вы знаете хорошие обучающие программы для синтаксиса - добавьте - сохраните? звучит очень сложно для меня .. Спасибо за вашу помощь! -/Oliver –
Вместо того, чтобы искать один учебник, почему бы вам не исследовать каждую тему? Должно быть десятки тысяч страниц, показывающих, как вы можете разбирать XML-файл на Java, например. –