Skip to content

Instantly share code, notes, and snippets.

@Lahirupc
Created November 3, 2016 03:18
Show Gist options
  • Save Lahirupc/a41a56b340bdd0dcab90488246748171 to your computer and use it in GitHub Desktop.
Save Lahirupc/a41a56b340bdd0dcab90488246748171 to your computer and use it in GitHub Desktop.
XML Parser
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.me.chat;
import java.io.IOException;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
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;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
/**
*
* @author Lahiru
*/
public class Parser {
private static ArrayList<User> userArrayList = new ArrayList<>();
private static String file = "E:\\ChatWebApp\\ChatWebApp\\users.xml";
public static void setFile(String file) {
Parser.file = file;
}
public static String parseFile() {
//TODO write your implementation code here:
userArrayList.clear();
String r="ads" ;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(file);
NodeList userList = doc.getElementsByTagName("user");
String u = "";
String p = "";
for (int i = 0; i < userList.getLength(); i++) {
Node userItem = userList.item(i);
if (userItem.getNodeType() == Node.ELEMENT_NODE) {
Element userElement = (Element) userItem;
//name part
NodeList nameList = userElement.getElementsByTagName("name");
Node nameItem = nameList.item(0);
if (nameItem.getNodeType() == Node.ELEMENT_NODE) {
Element nameElement = (Element) nameItem;
u = nameElement.getTextContent();
}
//pass part
NodeList passList = userElement.getElementsByTagName("pass");
Node passItem = passList.item(0);
if (nameItem.getNodeType() == Node.ELEMENT_NODE) {
Element passElement = (Element) passItem;
p = passElement.getTextContent();
}
//User usr = ;
r = i + u + p;
userArrayList.add(new User(u, p));
//System.out.println(r);
}
}
} catch (ParserConfigurationException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} catch (SAXException ex) {
ex.printStackTrace();
}
return r;
}
public static boolean validateUser(String name, String pass) {
boolean login = false;
parseFile();
for (User value : userArrayList) {
if (value.getUsername().equals(name)) {
login = value.getPassword().equals(pass);
}
}
return login;
}
public static boolean writeFile(String username, String password) {
boolean saved = false;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// root element
Document doc = builder.parse(file);
Element root = doc.getDocumentElement();
// user elements
Element user = doc.createElement("user");
root.appendChild(user);
//name elements
Element name = doc.createElement("name");
name.appendChild(doc.createTextNode(username));
user.appendChild(name);
//pass elements
Element pass = doc.createElement("pass");
pass.appendChild(doc.createTextNode(password));
user.appendChild(pass);
// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
saved = true;
} catch (IOException ex) {
ex.printStackTrace();
} catch (SAXException ex) {
ex.printStackTrace();
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
}
return saved;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment