Si, eccone un esempio che si può integrare in un metodo (in questo caso ritornerà un tipo String).
Prima creo la root e i nodi del xml, procedo con la sua validazione tramite xsd e scrivo il tutto in un file.
String stringXml = "";
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
Document doc = parser.newDocument();
Element childElement = null;
Element root = doc.createElementNS("http://blablabla", "ns1:example");
doc.appendChild(root);
root.setAttribute("xmlns", "http://...");
root.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
root.setAttribute("xsi:schemaLocation", "http://blablabla C:\\xsd\\example.xsd");
childElement = doc.createElement("destinazione");
childElement.setAttribute("ufficio","blablabla");
root.appendChild(childElement);
//... eventuali altri childElement
/* validazione xml con xsd */
SchemaFactory factorySchema =
SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
File schemaLocation = new File("c:\\xsd\\example.xsd");
Schema schema = factorySchema.newSchema(schemaLocation);
Validator validator = schema.newValidator();
DOMSource source = new DOMSource(doc);
validator.validate(source);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT,"yes");
/* scrive l'xml sul file */
File fileXml = new File("c:\\test\\test.xml");
StreamResult resultFile = new StreamResult(fileXml);
transformer.transform(source, resultFile);
/* oppure scrive sulla stringa */
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
stringXml = writer.toString();
}catch(Exception e){
throw new Exception(e.getMessage());
}
return stringXml;