Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import java.util.Stack;
- import java.util.Enumeration;
- import org.xml.sax.Attributes;
- import org.xml.sax.InputSource;
- import org.xml.sax.SAXException;
- import org.xml.sax.XMLReader;
- import org.xml.sax.helpers.DefaultHandler;
- public class XmlFileSplitter extends DefaultHandler {
- private static String dir = "c:\\users\\matthew\\desktop\\lab6\\";
- private static String outDir = "c:\\users\\matthew\\desktop\\lab6\\xmlstuff\\";
- private StringBuffer buffer;
- private int level;
- private boolean empty;
- private String tmpStream;
- private static String[] regions = { "africa", "asia", "australia",
- "europe", "namerica", "samerica" };
- public Writer out;
- private int increment = 0;
- public XmlFileSplitter() {
- buffer = new StringBuffer();
- level = 0;
- }
- public void startElement(String namespaceURI, String sName, // simple name
- String qName, // qualified name
- Attributes attrs) throws SAXException {
- level++;
- buffer.append(indentation(level)+"<"+sName);
- String eName = sName; // element name
- if ("".equals(eName)) {
- eName = qName; // not namespaceAware
- }
- if (attrs != null)
- {
- for (int i = 0; i < attrs.getLength(); i++) {
- String aName = attrs.getLocalName(i); // Attr name
- if ("".equals(aName)) {
- aName = attrs.getQName(i);
- }
- buffer.append(" " + aName + "=\"" + attrs.getValue(aName) + "\"");
- }
- }
- buffer.append(">");
- empty = true;
- }
- public void endElement(String uri, String localName, String qName)
- /* Missing code start here */
- throws SAXException {
- level--;
- buffer.append("</" + localName + ">");
- if(localName.equals("africa")||localName.equals("asia") || localName.equals("australia") || localName.equals("europe") || localName.equals("namerica") || localName.equals("samerica"))
- {
- String filename = localName + ".xml";
- PrintWriter printWriter;
- try {
- buffer.append(indentation(level-1)+"</regions>\n");
- buffer.append(indentation(level-2)+"</site>\n");
- printWriter = new PrintWriter( new FileWriter(outDir + filename));
- printWriter.println(buffer.toString());
- System.out.println("File saved.");
- printWriter.close();
- buffer.setLength(0);
- buffer.append(indentation(level-2)+"<site>\n");
- buffer.append(indentation(level-1)+"<regions>\n");
- } catch (IOException e) {
- // TODO Auto-generated catch block
- System.out.println("nope");
- e.printStackTrace();
- }
- }
- /* Missing code end here */
- }
- public String indentation(int level) {
- String indent = "";
- for (int i = 0; i < level; i++)
- indent += " ";
- return indent;
- }
- public static void main(String[] args) throws Exception {
- String file = "auction.xml";
- SAXParserFactory pfactory = SAXParserFactory.newInstance();
- pfactory.setValidating(false);
- pfactory.setNamespaceAware(true);
- SAXParser parser = pfactory.newSAXParser();
- XMLReader reader = parser.getXMLReader();
- XmlFileSplitter splitter = new XmlFileSplitter();
- reader.setContentHandler(splitter);
- reader.parse(new InputSource(new FileReader(dir + file)));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement