Mercurial > hg > Members > tatsuki > JungleXMLReader
view src/main/java/ac/jp/u_ryukyu/cr/ie/tatsuki/xmlReader/UpdateXmlHundler.java @ 42:c036d36c33af
function refactor
author | one |
---|---|
date | Tue, 25 Nov 2014 11:57:17 +0900 |
parents | |
children |
line wrap: on
line source
package ac.jp.u_ryukyu.cr.ie.tatsuki.xmlReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.xml.sax.*; import org.xml.sax.helpers.*; public class UpdateXmlHundler extends DefaultHandler { private String elementName; private boolean flag = false; private PrintWriter pw; private int count = 0; String xmlStr = ""; public UpdateXmlHundler(String xml) throws IOException { File file = new File("./XML/" + xml + ".xml"); pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { pw.print(xmlStr); xmlStr = "<"; if (qName != "") { // System.out.print("qName= " + qName); elementName = qName; if (elementName.equals("roleRefIds") || elementName.equals("organizationRefIds") || elementName.equals("personRefIds") || elementName.equals("childrenRoleRefIds") || elementName.equals("roleDescriptionElementRefIds")) flag = true; xmlStr = xmlStr + elementName; } if (attributes.getLength() != 0) { for (int count = 0; attributes.getLength() > count; count++) { String value = attributes.getValue(count); xmlStr = xmlStr + " " + attributes.getLocalName(count) + "=\"" + value + "\""; } } xmlStr = xmlStr + ">"; String tab = tab(); pw.print(tab + xmlStr); count++; xmlStr = "\n"; } @Override public void characters(char[] ch, int start, int length) { String str = new String(ch, start, length); Pattern pattern = Pattern.compile("\n"); Matcher macher = pattern.matcher(str); String[] split = str.split(" "); if (!macher.find()) { if (flag == true) { flag = false; for (String text : split) { pw.println(); if (elementName.equals("roleRefIds")) pw.print(tab() + "<roleRefId>" + text + "</roleRefId>"); if (elementName.equals("organizationRefIds")) pw.print(tab() + "<organizationRefId>" + text + "</organizationRefId>"); if (elementName.equals("personRefIds")) pw.print(tab() + "<personRefId>" + text + "</personRefId>"); if (elementName.equals("childrenRoleRefIds")) pw.print(tab() + "<childrenRoleRefId>" + text + "</childrenRoleRefId>"); if (elementName.equals("roleDescriptionElementRefIds")) pw.print(tab() + "<roleDescriptionElementRefId>" + text + "</roleDescriptionElementRefId>"); } count--; xmlStr = "\n" + tab(); count++; return; } else { if (str.equals("松田賢一")) System.out.println("aaaa"); pw.print(str); } xmlStr = ""; return; } if (flag == true) { xmlStr = ""; flag = false; } } @Override public void endElement(String namespaceURI, String localName, String qName) { count--; if (xmlStr == "\n") xmlStr = xmlStr + tab(); pw.print(xmlStr); pw.print("</" + qName + ">"); xmlStr = "\n"; } @Override public void startDocument() { // System.out.print("start"); } @Override public void endDocument() { pw.close(); System.out.print("end"); } private String tab() { String tab = ""; for (int tabCount = 0; tabCount < count; tabCount++) { tab = tab + " "; } return tab; } }