Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.44 KB | None | 0 0
  1. package dom;
  2.  
  3. import java.io.BufferedOutputStream;
  4. import java.io.File;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.OutputStream;
  8. import java.util.ArrayList;
  9. import java.util.Arrays;
  10.  
  11. import javax.xml.parsers.DocumentBuilder;
  12. import javax.xml.parsers.DocumentBuilderFactory;
  13. import javax.xml.parsers.ParserConfigurationException;
  14. import javax.xml.transform.Transformer;
  15. import javax.xml.transform.TransformerConfigurationException;
  16. import javax.xml.transform.TransformerException;
  17. import javax.xml.transform.TransformerFactory;
  18. import javax.xml.transform.dom.DOMSource;
  19. import javax.xml.transform.stream.StreamResult;
  20. import javax.xml.validation.Schema;
  21. import javax.xml.validation.SchemaFactory;
  22. import javax.xml.validation.Validator;
  23.  
  24. import org.w3c.dom.Document;
  25. import org.w3c.dom.Element;
  26. import org.w3c.dom.Node;
  27. import org.w3c.dom.NodeList;
  28. import org.xml.sax.SAXException;
  29.  
  30. import objekti.Hrana;
  31.  
  32. public class DomBranje {
  33.  
  34. public static Hrana hrana = new Hrana();
  35. public static ArrayList<Hrana> seznamHrane = new ArrayList<Hrana>();
  36. public static DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  37.  
  38. public static void main (String[] args) throws TransformerException, ParserConfigurationException, IOException, SAXException{
  39. ParseXML();
  40. ArrayList<Integer> idHrane = kolicinaManjKot10000();
  41. System.out.println(ustvariNovXML(idHrane));
  42. validacijaSheme();
  43.  
  44. }
  45.  
  46. private static void ParseXML(){
  47. try {
  48. File fXmlFile = new File("C:/Users/Urban Kos/Documents/Šola/3. Letnik/KIS/VAJE/2_Sklop_Nalog/2_SeznamHrane.xml");
  49. DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  50. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  51. Document doc = dBuilder.parse(fXmlFile);
  52.  
  53. //optional, but recommended
  54. //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work
  55. doc.getDocumentElement().normalize();
  56. System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
  57. NodeList nList = doc.getElementsByTagName("hrana");
  58. System.out.println("----------------------------");
  59.  
  60. for (int temp=0; temp < nList.getLength(); temp++) {
  61. hrana = new Hrana();
  62.  
  63. Node nNode = nList.item(temp);
  64. if (nNode.getNodeType() == Node.ELEMENT_NODE) {
  65. Element eElement = (Element) nNode;
  66.  
  67. System.out.println(eElement.getNodeName());
  68.  
  69. hrana.setId(Long.parseLong(eElement.getAttribute("id")));
  70. hrana.setNazivTip(eElement.getElementsByTagName("naziv").item(0).getAttributes().getNamedItem("tip").getNodeValue());
  71. hrana.setNaziv(eElement.getElementsByTagName("naziv").item(0).getTextContent());
  72.  
  73. try{
  74. String vrsta = eElement.getElementsByTagName("vrsta").item(0).getTextContent();
  75. hrana.setVrsta(vrsta);
  76. }catch(Exception e){
  77. hrana.setVrsta("/");
  78. }
  79.  
  80. hrana.setKolicinaEnota(eElement.getElementsByTagName("količina").item(0).getAttributes().getNamedItem("enota").getNodeValue());
  81. hrana.setKolicina(Double.parseDouble(eElement.getElementsByTagName("količina").item(0).getTextContent()));
  82. hrana.setCasEnota(eElement.getElementsByTagName("cas").item(0).getAttributes().getNamedItem("enota").getNodeValue());
  83. hrana.setCas(Double.parseDouble(eElement.getElementsByTagName("cas").item(0).getTextContent()));
  84. hrana.setDrzava(eElement.getElementsByTagName("drzava").item(0).getTextContent());
  85. hrana.setPrst(eElement.getElementsByTagName("prst").item(0).getTextContent());
  86. hrana.setVlaznost(eElement.getElementsByTagName("vlažnost").item(0).getTextContent());
  87. hrana.setTemperaturaEnota(eElement.getElementsByTagName("temperatura").item(0).getAttributes().getNamedItem("enota").getNodeValue());
  88. hrana.setTemperatura(Double.parseDouble(eElement.getElementsByTagName("temperatura").item(0).getTextContent()));
  89. hrana.setTransID(eElement.getElementsByTagName("transport").item(0).getAttributes().getNamedItem("idTrans").getNodeValue());
  90. hrana.setTransCas(eElement.getElementsByTagName("transport").item(0).getAttributes().getNamedItem("cas").getNodeValue());
  91. hrana.setTransDatum(eElement.getElementsByTagName("transport").item(0).getAttributes().getNamedItem("datumPoslano").getNodeValue());
  92. hrana.setStanjeTip(eElement.getElementsByTagName("stanje").item(0).getAttributes().getNamedItem("tip").getNodeValue());
  93. hrana.setStanje(eElement.getElementsByTagName("stanje").item(0).getTextContent());
  94.  
  95. seznamHrane.add(hrana);
  96. }
  97.  
  98. }
  99.  
  100. } catch (Exception e) {
  101. e.printStackTrace();
  102. }
  103.  
  104. }
  105.  
  106. public static ArrayList<Integer> kolicinaManjKot10000(){
  107. int stevilo = seznamHrane.size();
  108. double kolicina=0;
  109. ArrayList<Integer> idHrane = new ArrayList<Integer>();
  110.  
  111. if(seznamHrane.isEmpty()!=true){
  112. for(int i=0; i<stevilo; i++){
  113. kolicina = seznamHrane.get(i).getKolicina();
  114. if(kolicina<10000){
  115. idHrane.add(i);
  116. System.out.println(i);
  117. }
  118. }
  119. }
  120.  
  121. return idHrane;
  122. }
  123.  
  124. public static String ustvariNovXML(ArrayList<Integer> idHrane) throws TransformerException, ParserConfigurationException, IOException{
  125. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  126. Document docNov = dBuilder.newDocument();
  127. int dolzina = idHrane.size();
  128.  
  129. File rez = new File("8_DOM_XML_File.xml");
  130. if (rez.createNewFile()){
  131. System.out.println("File is created!");
  132. }else{
  133. System.out.println("File already exists.");
  134. }
  135. OutputStream out = new BufferedOutputStream(new FileOutputStream(rez));
  136.  
  137. Element rootElement = docNov.createElement("seznamRezultatov");
  138. rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.example.org/Hrana");
  139. rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:h", "http://www.example.org/Hrana");
  140. rootElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
  141.  
  142. Element seznam = docNov.createElement("seznam");
  143. Element rezultat=null, naziv=null, kolicina=null, vrsta=null, transport=null;
  144.  
  145. for(int i=0; i<dolzina; i++){
  146. rezultat = docNov.createElement("rezultat");
  147. naziv = docNov.createElement("naziv");
  148. kolicina = docNov.createElement("kolicina");
  149. vrsta = docNov.createElement("vrsta");
  150. transport = docNov.createElement("transport");
  151.  
  152. naziv.setTextContent(seznamHrane.get(idHrane.get(i)).getNaziv());
  153. kolicina.setTextContent(String.valueOf(seznamHrane.get(idHrane.get(i)).getKolicina()));
  154. vrsta.setTextContent(seznamHrane.get(idHrane.get(i)).getVrsta());
  155. transport.setTextContent(seznamHrane.get(idHrane.get(i)).getTransID());
  156.  
  157. rezultat.appendChild(naziv);
  158. rezultat.appendChild(kolicina);
  159. rezultat.appendChild(vrsta);
  160. rezultat.appendChild(transport);
  161. seznam.appendChild(rezultat);
  162. }
  163.  
  164. rootElement.appendChild(seznam);
  165. docNov.appendChild(rootElement);
  166.  
  167.  
  168.  
  169. TransformerFactory transformerFactory = TransformerFactory.newInstance();
  170. Transformer transformer = transformerFactory.newTransformer();
  171. DOMSource source = new DOMSource(docNov);
  172. StreamResult result = new StreamResult(out);
  173. transformer.transform(source, result);
  174.  
  175. return "Skozi";
  176. }
  177.  
  178. // VALIDACIJA SHEME -------------------------------------------------------------------------------------------------
  179. public static void validacijaSheme() throws IOException, SAXException, ParserConfigurationException{
  180. SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
  181.  
  182. File schemaLocation = new File("C:/Users/Urban Kos/Documents/Šola/3. Letnik/KIS/VAJE/2_Sklop_Nalog/3_Hrana.xsd");
  183. Schema schema = factory.newSchema(schemaLocation);
  184. Validator validator = schema.newValidator();
  185.  
  186. DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
  187. domFactory.setNamespaceAware(true); // never forget this
  188. DocumentBuilder builder = domFactory.newDocumentBuilder();
  189. Document doc = builder.parse(new File("C:/Users/Urban Kos/Documents/Šola/3. Letnik/KIS/VAJE/2_Sklop_Nalog/8_DOM_XML_File.xml"));
  190.  
  191. try {
  192. validator.validate(new DOMSource(doc));
  193. System.out.println("vse ok");
  194. }
  195. catch (SAXException ex) {
  196. System.out.println(" Napaka: " + ex.getMessage());
  197. }
  198. }
  199.  
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement