Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.SAXParseException;
- import org.xml.sax.helpers.DefaultHandler;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- 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 java.io.File;
- import java.text.SimpleDateFormat;
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.ArrayList;
- import java.util.List;
- public class PatientsModel {
- private String patientSurname;
- private String town;
- private String filePath = "AllPatient.xml";
- private List<PatientsModel> modelArray = new ArrayList<PatientsModel>();
- private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
- public String getPatientSurname(){
- return this.patientSurname;
- }
- public void setPatientSurname(String newPatientSurname){
- this.patientSurname = newPatientSurname;
- }
- public String getTown(){
- return this.town;
- }
- public void setTown(String newTown){
- this.town = newTown;
- }
- public List<PatientsModel> getModelArray(){
- return modelArray;
- }
- private void addNewElArr(){
- PatientsModel newModel = new PatientsModel();
- newModel.setPatientSurname(patientSurname);
- newModel.setTown(town);
- modelArray.add(newModel);
- }
- public void readXMLbySAX() { //String strPatientFio,String strAdress) {
- try {
- modelArray.clear();
- SAXParserFactory factory = SAXParserFactory.newInstance();
- SAXParser saxParser = factory.newSAXParser();
- DefaultHandler handler = new DefaultHandler() {
- boolean bPatientSurname = false;
- boolean bTown = false;
- public void startElement(String uri, String localName, String qPatientTag,
- Attributes attributes) throws SAXException {
- if (qPatientTag.equalsIgnoreCase("patientSurname")) {
- bPatientSurname = true;
- }
- if (qPatientTag.equalsIgnoreCase("town")) {
- bTown = true;
- }
- }
- public void endElement(String uri, String localName,
- String qPatientTag) throws SAXException {
- if (qPatientTag.equalsIgnoreCase("patient")) {
- System.out.println("end of tag :");// + maxPatient);
- }
- }
- public void characters(char ch[], int start, int length) throws SAXException {
- if(bPatientSurname){
- System.out.println("PatientSurname : " + new String(ch, start, length));
- bPatientSurname = false;
- setPatientSurname(new String(ch, start, length));
- System.out.println("Текущая фамилия :" + patientSurname);
- }
- if (bTown) {
- System.out.println("town : " + new String(ch, start, length));
- bTown = false;
- setTown(new String(ch, start, length));
- System.out.println("Текущий город :" + town);
- addNewElArr();
- }
- }
- };
- saxParser.parse(filePath, handler);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void writeXML(String strPatientSurname,String strTown) {
- //DOM
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder;
- try {
- builder = factory.newDocumentBuilder();
- Document document;
- File file = new File(filePath);
- if(file.length() == 0){
- document = factory.newDocumentBuilder().newDocument();
- Element root = document.createElement("root");
- document.appendChild(root);
- }
- else {
- document = builder.parse(filePath);
- }
- System.out.println("ХОБА1");
- document.getDocumentElement().normalize();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/YYYY");
- //String birthStr = (dateOfBirth).format(formatter);
- //String receiptStr = localDateOfReceipt.format(formatter);
- //addNewTag(document, strPatientSurname,strPatientName,strPatientPatronym, strTown,strStreet,strHouse,
- // strFlat, strDoctorSurname,strDoctorName,strDoctorPatronym, strConclusion, birthStr, receiptStr);
- addNewTag(document,strPatientSurname,strTown);
- document.getDocumentElement().normalize();
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource source = new DOMSource(document);
- StreamResult result = new StreamResult(new File(filePath));
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.transform(source, result);
- }catch (SAXParseException exception){
- System.out.println("ERRROR");
- }
- catch (Exception exc) {
- exc.printStackTrace();
- }
- }
- //private void addNewTag(Document doc, String strPatientSurname,String strPatientName,String strPatientPatronym,
- // String strTown,String strStreet,String strHouse,String strFlat,
- // String strDoctorSurname,String strDoctorName,String strDoctorPatronym,
- // String newConcl, String Birthday, String Receiptday) {
- private void addNewTag(Document doc,String strPatientSurname,String strTown){
- NodeList patients = doc.getElementsByTagName("root");
- Element lang = null;
- int i = patients.getLength();
- lang = (Element) patients.item(i - 1);
- Element patient = doc.createElement("patient");
- Element patientSurname = doc.createElement("patientSurname");
- //Element patientName = doc.createElement("patientName");
- //Element patientPatronym = doc.createElement("patientPatronym");
- Element town = doc.createElement("town");
- // Element street = doc.createElement("street");
- /*Element house = doc.createElement("house");
- Element flat = doc.createElement("flat");
- Element doctorSurname = doc.createElement("doctorSurname");
- Element doctorName = doc.createElement("doctorName");
- Element doctorPatronym = doc.createElement("doctorPatronym");
- Element conclusion = doc.createElement("conclusion");
- Element dateOfBirth = doc.createElement("dateOfBirth");
- Element dateOfReceipt = doc.createElement("dateOfReceipt");
- */
- patientSurname.appendChild(doc.createTextNode(strPatientSurname));
- // patientName.appendChild(doc.createTextNode(strPatientName));
- //patientPatronym.appendChild(doc.createTextNode(strPatientPatronym));
- town.appendChild(doc.createTextNode(strTown));
- /*street.appendChild(doc.createTextNode(strStreet));
- house.appendChild(doc.createTextNode(strHouse));
- flat.appendChild(doc.createTextNode(strFlat));
- doctorSurname.appendChild(doc.createTextNode(strDoctorSurname));
- doctorName.appendChild(doc.createTextNode(strDoctorName));
- doctorPatronym.appendChild(doc.createTextNode(strDoctorPatronym));
- conclusion.appendChild(doc.createTextNode(newConcl));
- dateOfBirth.appendChild(doc.createTextNode(Birthday));//String to LocalDate
- dateOfReceipt.appendChild(doc.createTextNode(Receiptday));
- */
- patient.appendChild((patientSurname));
- //patient.appendChild((patientName));
- //patient.appendChild((patientPatronym));
- patient.appendChild((town));
- /*patient.appendChild((street));
- patient.appendChild((house));
- patient.appendChild((flat));
- patient.appendChild(doctorSurname);
- patient.appendChild(doctorName);
- patient.appendChild(doctorPatronym);
- patient.appendChild(conclusion);
- patient.appendChild(dateOfBirth);
- patient.appendChild(dateOfReceipt);
- */
- lang.appendChild(patient);
- }
- public void delTag(int willDel) {
- try {
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- DocumentBuilder builder;
- builder = factory.newDocumentBuilder();
- Document document = builder.parse(filePath);
- Element element = (Element) document.getElementsByTagName("patient").item(willDel);
- Node parent = element.getParentNode();
- parent.removeChild(element);
- parent.normalize();
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource source = new DOMSource(document);
- StreamResult result = new StreamResult(new File(filePath));
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.transform(source, result);
- } catch (Exception exc) {
- exc.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement