ArrayList内の乗客の名前をXMLファイルに書き込もうとしています。私はXML文書の作成のためのコードをAircraftクラスに入れなければなりません。以下は、航空機クラスの両方のコードです。これには、主な呼び出しメソッドApp.java用のコードも含まれています。これらのクラスのいずれにもエラーはありません。しかし、私の一部は、XMLファイルを正しく作成していないと考えています。私はwriteNames()メソッドをApp.javaのどこでも呼び出して、正しく動作させる必要があるのだろうかと思っていましたか?名前をArrayListからXMLファイルに書き込む
航空機クラス:
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class Aircraft {
private double maxSpeed;
private int maxPassengers;
private int numEngines;
private Pilot pilot;
private Stewardess stewardess;
private ArrayList<Passenger> passengers;
Aircraft(double maxSpeed, int maxPassengers, int numEngines, Pilot pilot,
Stewardess stewardess, ArrayList<Passenger> passengers)
{
this.pilot = pilot;
this.stewardess = stewardess;
this.passengers = passengers;
this.maxSpeed = maxSpeed;
this.maxPassengers = maxPassengers;
this.numEngines = numEngines;
}
public String getInfo()
{
return "Aircraft" + "\n" + "Max Speed: " + this.maxSpeed + " mph " + "\n" +
"Max Passengers: " + this.maxPassengers + " passengers " + "\n" + "Number of Engines: " +
this.numEngines + " engines" + "\n" + "\n" + this.pilot.getInfo() + "\n" + "\n" + "Stewardess"
+ this.stewardess.getInfo() + "\n" + "\n" + "Passenger 1" + passengers.get(0).getInfo() + "\n"+ "\n" + "Passenger 2"
+ passengers.get(1).getInfo() + "\n" + "\n" + "Passenger 3" + passengers.get(2).getInfo() + "\n" + "\n" + "Passenger 4"
+ passengers.get(3).getInfo();
}
public ArrayList<String> writeNames(ArrayList<String> passengers)
{
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element xmlRoot = document.createElement("Passengers");
document.appendChild(xmlRoot);
Element passenger;
Element name;
//passenger1
passenger = document.createElement("Passenger");
passenger.setAttribute("id", "1");
name = document.createElement("Name");
name.appendChild(document.createTextNode(passengers.get(0)));
passenger.appendChild(name);
xmlRoot.appendChild(passenger);
//passenger2
passenger = document.createElement("Passenger");
passenger.setAttribute("id", "2");
name = document.createElement("Name");
name.appendChild(document.createTextNode(passengers.get(1)));
passenger.appendChild(name);
xmlRoot.appendChild(passenger);
//passenger3
passenger = document.createElement("Passenger");
passenger.setAttribute("id", "3");
name = document.createElement("Name");
name.appendChild(document.createTextNode(passengers.get(2)));
passenger.appendChild(name);
xmlRoot.appendChild(passenger);
//passenger4
passenger = document.createElement("Passenger");
passenger.setAttribute("id", "4");
name = document.createElement("Name");
name.appendChild(document.createTextNode(passengers.get(3)));
passenger.appendChild(name);
xmlRoot.appendChild(passenger);
//Write document to file
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult("src/passengers.xml");
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
return passengers;
}
}
App.java:あなたが書きたい場合は、あなたが提供されたコードをオフに基づいて
import java.util.ArrayList;
public class App {
public static void main(String[] args) {
//Four roommates that share same address, have different suitcases, traveling to different destinations
Address address = new Address("University Park", "PA", "16802");
Suitcase suitcase1 = new Suitcase(7, 75, "Carry Strap");
Suitcase suitcase2 = new Suitcase(5, 70, "No Carry Strap");
Suitcase suitcase3 = new Suitcase(4, 60, "No Carry Strap");
Suitcase suitcase4 = new Suitcase(8, 55, "Carry Strap");
//Stewardess Info
Suitcase suitcaseStewardess = new Suitcase(4, 40, "No Carry Strap");
Address addressStewardess = new Address("Doylestown", "PA", "18902");
Stewardess stewardess = new Stewardess(4, "Full Time", 40, suitcaseStewardess, addressStewardess);
//Pilot Info
Suitcase suitcasePilot = new Suitcase(10, 50, "Carry Strap");
Address addressPilot = new Address("Raliegh", "NC", "27513");
Map map = new Map(14000.5, "United States", "Northeast");
Pilot pilot = new Pilot(7, 40, "Perfect", suitcasePilot, map, addressPilot);
//Passenger Info
ArrayList<Passenger> passengers = new ArrayList<>();
passengers.add(new Passenger("Luke Harding", 1400, "England", "First Class - A14", suitcase1, address));
passengers.add(new Passenger("Dalton Sydnor", 1000, "Mexico", "First Class - G7", suitcase2, address));
passengers.add(new Passenger("Ian Smithgall", 700, "Russia", "First Class - C4", suitcase3, address));
passengers.add(new Passenger("Matt Yohe", 850, "Indiana", "First Class - B1", suitcase4, address));
//Aircraft Info
Aircraft aircraft = new Aircraft (750, 400, 4, pilot, stewardess, passengers);
System.out.println(aircraft.getInfo());
}
}
そしてもう一度? –
@HovercraftFullOfEels私はまだそれを行う方法を学んでいません – javacrazy
クレイジー、それを探してみましょう。それはむしろ柔軟で、強力で、まさに素敵です。 –