Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package dom;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.util.ArrayList;
- import java.util.Arrays;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerConfigurationException;
- import javax.xml.transform.TransformerException;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import javax.xml.validation.Schema;
- import javax.xml.validation.SchemaFactory;
- import javax.xml.validation.Validator;
- 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;
- import objekti.Hrana;
- public class DomBranje {
- public static Hrana hrana = new Hrana();
- public static ArrayList<Hrana> seznamHrane = new ArrayList<Hrana>();
- public static DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- public static void main (String[] args) throws TransformerException, ParserConfigurationException, IOException, SAXException{
- ParseXML();
- ArrayList<Integer> idHrane = kolicinaManjKot10000();
- System.out.println(ustvariNovXML(idHrane));
- validacijaSheme();
- }
- private static void ParseXML(){
- try {
- File fXmlFile = new File("C:/Users/Urban Kos/Documents/Šola/3. Letnik/KIS/VAJE/2_Sklop_Nalog/2_SeznamHrane.xml");
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(fXmlFile);
- //optional, but recommended
- //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
- doc.getDocumentElement().normalize();
- System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
- NodeList nList = doc.getElementsByTagName("hrana");
- System.out.println("----------------------------");
- for (int temp=0; temp < nList.getLength(); temp++) {
- hrana = new Hrana();
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- System.out.println(eElement.getNodeName());
- hrana.setId(Long.parseLong(eElement.getAttribute("id")));
- hrana.setNazivTip(eElement.getElementsByTagName("naziv").item(0).getAttributes().getNamedItem("tip").getNodeValue());
- hrana.setNaziv(eElement.getElementsByTagName("naziv").item(0).getTextContent());
- try{
- String vrsta = eElement.getElementsByTagName("vrsta").item(0).getTextContent();
- hrana.setVrsta(vrsta);
- }catch(Exception e){
- hrana.setVrsta("/");
- }
- hrana.setKolicinaEnota(eElement.getElementsByTagName("količina").item(0).getAttributes().getNamedItem("enota").getNodeValue());
- hrana.setKolicina(Double.parseDouble(eElement.getElementsByTagName("količina").item(0).getTextContent()));
- hrana.setCasEnota(eElement.getElementsByTagName("cas").item(0).getAttributes().getNamedItem("enota").getNodeValue());
- hrana.setCas(Double.parseDouble(eElement.getElementsByTagName("cas").item(0).getTextContent()));
- hrana.setDrzava(eElement.getElementsByTagName("drzava").item(0).getTextContent());
- hrana.setPrst(eElement.getElementsByTagName("prst").item(0).getTextContent());
- hrana.setVlaznost(eElement.getElementsByTagName("vlažnost").item(0).getTextContent());
- hrana.setTemperaturaEnota(eElement.getElementsByTagName("temperatura").item(0).getAttributes().getNamedItem("enota").getNodeValue());
- hrana.setTemperatura(Double.parseDouble(eElement.getElementsByTagName("temperatura").item(0).getTextContent()));
- hrana.setTransID(eElement.getElementsByTagName("transport").item(0).getAttributes().getNamedItem("idTrans").getNodeValue());
- hrana.setTransCas(eElement.getElementsByTagName("transport").item(0).getAttributes().getNamedItem("cas").getNodeValue());
- hrana.setTransDatum(eElement.getElementsByTagName("transport").item(0).getAttributes().getNamedItem("datumPoslano").getNodeValue());
- hrana.setStanjeTip(eElement.getElementsByTagName("stanje").item(0).getAttributes().getNamedItem("tip").getNodeValue());
- hrana.setStanje(eElement.getElementsByTagName("stanje").item(0).getTextContent());
- seznamHrane.add(hrana);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static ArrayList<Integer> kolicinaManjKot10000(){
- int stevilo = seznamHrane.size();
- double kolicina=0;
- ArrayList<Integer> idHrane = new ArrayList<Integer>();
- if(seznamHrane.isEmpty()!=true){
- for(int i=0; i<stevilo; i++){
- kolicina = seznamHrane.get(i).getKolicina();
- if(kolicina<10000){
- idHrane.add(i);
- System.out.println(i);
- }
- }
- }
- return idHrane;
- }
- public static String ustvariNovXML(ArrayList<Integer> idHrane) throws TransformerException, ParserConfigurationException, IOException{
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document docNov = dBuilder.newDocument();
- int dolzina = idHrane.size();
- File rez = new File("8_DOM_XML_File.xml");
- if (rez.createNewFile()){
- System.out.println("File is created!");
- }else{
- System.out.println("File already exists.");
- }
- OutputStream out = new BufferedOutputStream(new FileOutputStream(rez));
- Element rootElement = docNov.createElement("seznamRezultatov");
- rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.example.org/Hrana");
- rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:h", "http://www.example.org/Hrana");
- rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
- Element seznam = docNov.createElement("seznam");
- Element rezultat=null, naziv=null, kolicina=null, vrsta=null, transport=null;
- for(int i=0; i<dolzina; i++){
- rezultat = docNov.createElement("rezultat");
- naziv = docNov.createElement("naziv");
- kolicina = docNov.createElement("kolicina");
- vrsta = docNov.createElement("vrsta");
- transport = docNov.createElement("transport");
- naziv.setTextContent(seznamHrane.get(idHrane.get(i)).getNaziv());
- kolicina.setTextContent(String.valueOf(seznamHrane.get(idHrane.get(i)).getKolicina()));
- vrsta.setTextContent(seznamHrane.get(idHrane.get(i)).getVrsta());
- transport.setTextContent(seznamHrane.get(idHrane.get(i)).getTransID());
- rezultat.appendChild(naziv);
- rezultat.appendChild(kolicina);
- rezultat.appendChild(vrsta);
- rezultat.appendChild(transport);
- seznam.appendChild(rezultat);
- }
- rootElement.appendChild(seznam);
- docNov.appendChild(rootElement);
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource source = new DOMSource(docNov);
- StreamResult result = new StreamResult(out);
- transformer.transform(source, result);
- return "Skozi";
- }
- // VALIDACIJA SHEME -------------------------------------------------------------------------------------------------
- public static void validacijaSheme() throws IOException, SAXException, ParserConfigurationException{
- SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
- File schemaLocation = new File("C:/Users/Urban Kos/Documents/Šola/3. Letnik/KIS/VAJE/2_Sklop_Nalog/3_Hrana.xsd");
- Schema schema = factory.newSchema(schemaLocation);
- Validator validator = schema.newValidator();
- DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
- domFactory.setNamespaceAware(true); // never forget this
- DocumentBuilder builder = domFactory.newDocumentBuilder();
- Document doc = builder.parse(new File("C:/Users/Urban Kos/Documents/Šola/3. Letnik/KIS/VAJE/2_Sklop_Nalog/8_DOM_XML_File.xml"));
- try {
- validator.validate(new DOMSource(doc));
- System.out.println("vse ok");
- }
- catch (SAXException ex) {
- System.out.println(" Napaka: " + ex.getMessage());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement