51,412
社区成员
发帖
与我相关
我的任务
分享<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Flights>
<Flight id="1">
<flightNumber>ABC1</flightNumber>
<airline>Lufthansa</airline>
<airplaneType>A380</airplaneType>
<terminal>1</terminal>
<gate>G</gate>
<departureAirport>MUC</departureAirport>
<arrivalAirport>FAO</arrivalAirport>
<departureDateTime>2018-05-10 18:00</departureDateTime>
<arrivalDateTime>2018-05-10 19:00</arrivalDateTime>
<seat>13A</seat>
</Flight>
<Flight id="2">
<flightNumber>ABC2</flightNumber>
<airline>Lufthansa</airline>
<airplaneType>A320</airplaneType>
<terminal>2</terminal>
<gate>C</gate>
<departureAirport>FAO</departureAirport>
<arrivalAirport>MUC</arrivalAirport>
<departureDateTime>2018-05-11 18:00</departureDateTime>
<arrivalDateTime>2018-05-11 19:00</arrivalDateTime>
<seat>13A</seat>
</Flight>
<Flight id="3">
<flightNumber>ABC2</flightNumber>
<airline>Lufthansa</airline>
<airplaneType>A320</airplaneType>
<terminal>2</terminal>
<gate>C</gate>
<departureAirport>FAO</departureAirport>
<arrivalAirport>MUC</arrivalAirport>
<departureDateTime>2018-05-11 18:00</departureDateTime>
<arrivalDateTime>2018-05-11 19:00</arrivalDateTime>
<seat>13A</seat>
</Flight>
<Flight id="4">
<flightNumber>ABC2</flightNumber>
<airline>Lufthansa</airline>
<airplaneType>A320</airplaneType>
<terminal>2</terminal>
<gate>C</gate>
<departureAirport>FAO</departureAirport>
<arrivalAirport>MUC</arrivalAirport>
<departureDateTime>2018-05-11 18:00</departureDateTime>
<arrivalDateTime>2018-05-11 19:00</arrivalDateTime>
<seat>13A</seat>
</Flight>
<Flight id="5">
<flightNumber>ABC2</flightNumber>
<airline>Lufthansa</airline>
<airplaneType>A320</airplaneType>
<terminal>2</terminal>
<gate>C</gate>
<departureAirport>FAO</departureAirport>
<arrivalAirport>MUC</arrivalAirport>
<departureDateTime>2018-05-11 18:00</departureDateTime>
<arrivalDateTime>2018-05-11 19:00</arrivalDateTime>
<seat>13A</seat>
</Flight>
</Flights>
求回答public class FlightData {
protected Document documentAll = null;
protected Document documentUser = null;
protected NodeList flightListAll;
protected NodeList flightListUser;
private int counter;
DateTimeFormatter date = DateTimeFormatter.ofPattern("yyyy-MM-dd");
DateTimeFormatter time = DateTimeFormatter.ofPattern("HH:mm");
public FlightData () {
counter = 0;
DocumentBuilderFactory dbf;
DocumentBuilder db;
dbf = DocumentBuilderFactory.newInstance();
try {
db = dbf.newDocumentBuilder();
documentAll = db.parse("./app/FlightApp/TestData.xml");
flightListAll = documentAll.getElementsByTagName("Flight");
documentUser = db.parse("./app/FlightApp/DataUser.xml");
flightListUser = documentUser.getElementsByTagName("Flight");
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* get the flight object with the index in the xml database
* @param the index of the flight that you want to get
* @return the flight that matches the index
*/
private Flight getFlight(NodeList nodelist, int index) {
Node flight = nodelist.item(index);
NodeList childNodes = flight.getChildNodes();
String flightNumber = childNodes.item(1).getFirstChild().getNodeValue();
String airline = childNodes.item(3).getFirstChild().getNodeValue();
String airplaneType = childNodes.item(5).getFirstChild().getNodeValue();
String terminal = childNodes.item(7).getFirstChild().getNodeValue();
String gate = childNodes.item(9).getFirstChild().getNodeValue();
String departureAirport = childNodes.item(11).getFirstChild().getNodeValue();
String arrivalAirport = childNodes.item(13).getFirstChild().getNodeValue();
String departureDateTime = childNodes.item(15).getFirstChild().getNodeValue();
String arrivalDateTime = childNodes.item(17).getFirstChild().getNodeValue();
String seat = childNodes.item(19).getFirstChild().getNodeValue();
Flight f = new Flight(flightNumber, airline, airplaneType, terminal, gate, departureAirport, arrivalAirport, seat, departureDateTime, arrivalDateTime);
// System.out.println(flightNumber);
// System.out.println(airline);
// System.out.println(airplaneType);
// System.out.println(terminal);
// System.out.println(gate);
// System.out.println(departureAirport);
// System.out.println(arrivalAirport);
// System.out.println(departureDateTime);
// System.out.println(arrivalDateTime);
// System.out.println(seat);
return f;
}
/**
* get the all the flight
* @return all the flights in a List
*/
public List<Flight> getFlightsAll() {
return getFlights(flightListAll);
}
/**
* get the user's flight
* @return the user' flights in a List
*/
public List<Flight> getFlightsUser() {
return getFlights(flightListUser);
}
private List<Flight> getFlights(NodeList nodelist) {
List<Flight> flights = new ArrayList<Flight>();
for (int i = 0; i < nodelist.getLength(); i++) {
flights.add(getFlight(nodelist, i));
}
return flights;
}
/**
* @return the length of the list of all flights
*/
public int getSizeAllFlights () {
return flightListAll.getLength();
}
/**
* @return the length of the list of user's flights
*/
public int getSizeUserFlights () {
return flightListUser.getLength();
}
public void addNodeToUserFlights() {
//TODO delete
Flight a = new Flight("ABC2", "Lufthansa", "A320", "2", "C", "FAO", "MUC", "13A", "2018-05-11 18:00", "2018-05-11 19:00");
addNode("./app/FlightApp/DataUser.xml", a, "Flights", documentUser);
}
private void addNode(String fileName, Flight flight, String fatherNodeName, Document document) {
assert(document.equals(flightListUser));
try {
Element newflight = document.createElement("Flight");
counter++;
newflight.setAttribute("id", getSizeUserFlights() + counter + "");
Element flightNumber = document.createElement("flightNumber");
Element airline = document.createElement("airline");
Element airplaneType = document.createElement("airplaneType");
Element terminal = document.createElement("terminal");
Element gate = document.createElement("gate");
Element departureAirport = document.createElement("departureAirport");
Element arrivalAirport = document.createElement("arrivalAirport");
Element departureDateTime = document.createElement("departureDateTime");
Element arrivalDateTime = document.createElement("arrivalDateTime");
Element seat = document.createElement("seat");
flightNumber.setTextContent(flight.getFlightNumber());
airline.setTextContent(flight.getAirline());
airplaneType.setTextContent(flight.getAirplaneType());
terminal.setTextContent(flight.getTerminal());
gate.setTextContent(flight.getGate());
departureAirport.setTextContent(flight.getDepartureAirport());
arrivalAirport.setTextContent(flight.getArrivalAirport());
departureDateTime.setTextContent(flight.getDepartureDateTime().format(date) + " " + flight.getDepartureDateTime().format(time));
arrivalDateTime.setTextContent(flight.getArrivalDateTime().format(date) + " " + flight.getArrivalDateTime().format(time));
seat.setTextContent(flight.getSeat());
newflight.appendChild(flightNumber);
newflight.appendChild(airline);
newflight.appendChild(airplaneType);
newflight.appendChild(terminal);
newflight.appendChild(gate);
newflight.appendChild(departureAirport);
newflight.appendChild(arrivalAirport);
newflight.appendChild(departureDateTime);
newflight.appendChild(arrivalDateTime);
newflight.appendChild(seat);
Element fatherElement = (Element)document.getElementsByTagName(fatherNodeName).item(0);
fatherElement.appendChild(newflight);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
StreamResult result = new StreamResult(new FileOutputStream(fileName));
transformer.transform(source, result);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}