Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import org.w3c.dom.Document;
- import org.w3c.dom.NodeList;
- import org.w3c.dom.Node;
- import org.w3c.dom.Element;
- import java.io.File;
- public class Main {
- public static void main(String[] args) {
- try {
- String filepath = "D:\\Eclipse workspace\\Fraktale Java\\files\\rect_out";
- File fXmlFile = new File(filepath + ".xml");
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = dBuilder.parse(fXmlFile);
- doc.getDocumentElement().normalize();
- float oldSize = 0.f;
- float newSize = 0.f;
- float oldX = 0.f;
- float oldY = 0.f;
- Element root = doc.getDocumentElement();
- System.out.println("Root element :" + root.getNodeName());
- NodeList nList = doc.getChildNodes();
- System.out.println("-----------------------");
- System.out.println(nList.item(0).getChildNodes().getLength());
- //int rectCount = 0;
- for (int temp = 0; temp < nList.getLength(); temp++) {
- Node nNode = nList.item(temp);
- if (nNode.getNodeType() == Node.ELEMENT_NODE) {
- Element eElement = (Element) nNode;
- oldSize = Float.parseFloat(getAttributeValue("width", (Element) (getTag("rect", eElement))));
- newSize = oldSize/3;
- setAttributeValue("width", Float.toString(newSize), (Element) (getTag("rect", eElement)));
- setAttributeValue("height", Float.toString(newSize), (Element) (getTag("rect", eElement)));
- nNode.removeChild(getTag("rect", eElement));
- Element[] newRects = new Element[8];
- float x = 0;
- float y = 0;
- for(int i = 0; i < newRects.length; i++) {
- if((x == 1) && (y == 1))
- x++;
- newRects[i] = doc.createElement("rect");
- newRects[i].setAttribute("x", Float.toString(oldX+x*newSize));
- newRects[i].setAttribute("y", Float.toString(oldY+y*newSize));
- newRects[i].setAttribute("width", Float.toString(newSize));
- newRects[i].setAttribute("height", Float.toString(newSize));
- newRects[i].setAttribute("fill", "white");
- root.appendChild(newRects[i]);
- if(x == 2) {
- x = 0;
- y++;
- }
- else
- x++;
- }
- }
- }
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- DOMSource source = new DOMSource(doc);
- StreamResult result = new StreamResult(new File(filepath + "_out.xml"));
- transformer.transform(source, result);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- private static String getTagValue(String sTag, Element eElement) {
- NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
- Node nValue = (Node) nlList.item(0);
- return nValue.getNodeValue();
- }
- private static Node getTag(String sTag, Element eElement) {
- Node nNode = eElement.getElementsByTagName(sTag).item(0);
- return nNode;
- }
- private static String getAttributeValue(String sAttribute, Element eElement) {
- return eElement.getAttribute(sAttribute);
- }
- private static void setAttributeValue(String sAttribute, String sValue, Element eElement) {
- eElement.setAttribute(sAttribute, sValue);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement