public boolean guardarRecetaModoAvanzado( ArrayList<Ingrediente> ingredientes, ArrayList<Paso> pasos, String nombre) { // Create a factory File file = new File(rutaAlmacenamientoExterno + "recetas.xml"); if (!file.exists()) crearArchivo("recetas.xml", "recetas"); Document doc = getDoc("recetas.xml"); if (doc != null) { // Compruebo que no hay ninguna lista con el mismo nombre NodeList recetas = doc.getElementsByTagName("receta"); for (int i = 0; i < recetas.getLength(); i++) { Element current = (Element) recetas.item(i); if (current.getAttribute("nombre").equals(nombre)) return false; } Element receta = doc.createElement("receta"); receta.setAttribute("nombre", nombre); // Creo y añado los ingredientes Element ingredientesRoot = doc.createElement("ingredientes"); for (int i = 0; i < ingredientes.size(); i++) { Ingrediente ing = ingredientes.get(i); Element ingredienteChild = doc.createElement("ingrediente"); ingredienteChild.setAttribute("nombre", ing.getNombre()); ingredienteChild.setAttribute("cantidad", ing.getCantidad()); ingredientesRoot.appendChild(ingredienteChild); } receta.appendChild(ingredientesRoot); // Creo y añado la elaboración Element elaboracionRoot = doc.createElement("elaboracion"); elaboracionRoot.setAttribute("mode", "advanced"); for (int i = 0; i < pasos.size(); i++) { Paso p = pasos.get(i); Element paso = doc.createElement("paso"); paso.setAttribute("numero", p.getNumber()); if (p.getPath() != null) { paso.setAttribute("path", p.getPath()); } paso.setTextContent(p.getDescripcion()); elaboracionRoot.appendChild(paso); } receta.appendChild(elaboracionRoot); // añado la receta al root element doc.getDocumentElement().appendChild(receta); return saveDoc("recetas.xml", doc); } return false; }