Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.20 KB | None | 0 0
  1. import java.io.*;
  2.  
  3. import javax.xml.parsers.SAXParser;
  4. import javax.xml.parsers.SAXParserFactory;
  5.  
  6. import java.util.Stack;
  7. import java.util.Enumeration;
  8.  
  9. import org.xml.sax.Attributes;
  10. import org.xml.sax.InputSource;
  11. import org.xml.sax.SAXException;
  12. import org.xml.sax.XMLReader;
  13. import org.xml.sax.helpers.DefaultHandler;
  14.  
  15. public class XmlFileSplitter extends DefaultHandler {
  16.  
  17.     private static String dir = "c:\\users\\matthew\\desktop\\lab6\\";
  18.     private static String outDir = "c:\\users\\matthew\\desktop\\lab6\\xmlstuff\\";
  19.     private StringBuffer buffer;
  20.     private int level;
  21.     private boolean empty;
  22.     private String tmpStream;
  23.     private static String[] regions = { "africa", "asia", "australia",
  24.         "europe", "namerica", "samerica" };
  25.     public Writer out;
  26.     private int increment = 0;
  27.     public XmlFileSplitter() {
  28.         buffer = new StringBuffer();
  29.         level = 0;
  30.     }
  31.  
  32.     public void startElement(String namespaceURI, String sName, // simple name
  33.             String qName, // qualified name
  34.             Attributes attrs) throws SAXException {
  35.         level++;
  36.         buffer.append(indentation(level)+"<"+sName);
  37.  
  38.         String eName = sName; // element name
  39.  
  40.         if ("".equals(eName)) {
  41.             eName = qName; // not namespaceAware
  42.         }
  43.  
  44.         if (attrs != null)
  45.         {
  46.             for (int i = 0; i < attrs.getLength(); i++) {
  47.                 String aName = attrs.getLocalName(i); // Attr name
  48.  
  49.                 if ("".equals(aName)) {
  50.                     aName = attrs.getQName(i);
  51.                 }
  52.  
  53.                 buffer.append(" " + aName + "=\"" + attrs.getValue(aName) + "\"");
  54.  
  55.             }
  56.  
  57.         }
  58.         buffer.append(">");
  59.  
  60.         empty = true;
  61.     }
  62.  
  63.     public void endElement(String uri, String localName, String qName)
  64.     /* Missing code start here */
  65.             throws SAXException {
  66.  
  67.         level--;
  68.         buffer.append("</" + localName + ">");
  69.  
  70.         if(localName.equals("africa")||localName.equals("asia") || localName.equals("australia") || localName.equals("europe") || localName.equals("namerica") || localName.equals("samerica"))
  71.         {
  72.  
  73.             String filename = localName + ".xml";
  74.             PrintWriter printWriter;
  75.             try {
  76.                 buffer.append(indentation(level-1)+"</regions>\n");
  77.                 buffer.append(indentation(level-2)+"</site>\n");
  78.                 printWriter = new PrintWriter( new FileWriter(outDir + filename));
  79.                 printWriter.println(buffer.toString());
  80.                 System.out.println("File saved.");
  81.                 printWriter.close();
  82.                 buffer.setLength(0);
  83.                 buffer.append(indentation(level-2)+"<site>\n");
  84.                 buffer.append(indentation(level-1)+"<regions>\n");
  85.  
  86.             } catch (IOException e) {
  87.                 // TODO Auto-generated catch block
  88.                 System.out.println("nope");
  89.                 e.printStackTrace();
  90.             }
  91.         }
  92.  
  93.  
  94.         /* Missing code end here */
  95.     }
  96.  
  97.  
  98.  
  99.  
  100.     public String indentation(int level) {
  101.         String indent = "";
  102.         for (int i = 0; i < level; i++)
  103.             indent += " ";
  104.         return indent;
  105.     }
  106.  
  107.     public static void main(String[] args) throws Exception {
  108.         String file = "auction.xml";
  109.         SAXParserFactory pfactory = SAXParserFactory.newInstance();
  110.         pfactory.setValidating(false);
  111.         pfactory.setNamespaceAware(true);
  112.         SAXParser parser = pfactory.newSAXParser();
  113.         XMLReader reader = parser.getXMLReader();
  114.         XmlFileSplitter splitter = new XmlFileSplitter();
  115.         reader.setContentHandler(splitter);
  116.         reader.parse(new InputSource(new FileReader(dir + file)));
  117.     }
  118.  
  119.  
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement