package de.ifgi.lod4wfs.tests;
import java.io.StringWriter;
import java.util.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class AddXmlNode {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("src/main/resources/CapabilitiesDocument_100.xml");
Element root = document.getDocumentElement();
// Root Element
Element rootElement = document.getDocumentElement();
//
// Text a = document.createTextNode("FeatureType");
// Element p = document.createElement("meu_node");
// p.appendChild(a);
// nodes.item(0).getParentNode().insertBefore(p, nodes.item(0));
Collection<Features> feature = new ArrayList<Features>();
feature.add(new Features());
for (Features i : feature) {
// server elements
Element elementFeature = document.createElement("FeatureType");
//rootElement.appendChild(elementFeature);
Element name = document.createElement("name");
name.appendChild(document.createTextNode(i.getName()));
elementFeature.appendChild(name);
Element port = document.createElement("port");
port.appendChild(document.createTextNode(Integer.toString(i.getPort())));
elementFeature.appendChild(port);
// //root.getParentNode().insertBefore(elementFeature, port);
//root.appendChild(elementFeature);
// O ouro!!!
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList myNodeList = (NodeList) xpath.compile("//FeatureTypeList/text()").evaluate(document, XPathConstants.NODESET);
Element p = document.createElement("FeatureType");
p.appendChild(name);
p.appendChild(port);
myNodeList.item(1).getParentNode().insertBefore(p, myNodeList.item(1));
// Fim o ouro!!!
}
DOMSource source = new DOMSource(document);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter sw = new StringWriter();
StreamResult result2 = new StreamResult("/home/jones/Desktop/server.xml");
transformer.transform(source, result2);
StreamResult result = new StreamResult(sw);
transformer.transform(source, result);
StringBuffer sb = sw.getBuffer();
System.out.println(sb.toString());
}
public static class Features {
public String getName() { return "foo"; }
public Integer getPort() { return 12345; }
}
}