fork download
  1. /* http://es.stackoverflow.com/q/36168/127 */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6. import javax.xml.parsers.DocumentBuilder;
  7. import javax.xml.parsers.DocumentBuilderFactory;
  8. import javax.xml.transform.*;
  9. import javax.xml.transform.dom.*;
  10. import javax.xml.transform.stream.*;
  11. import org.w3c.dom.Document;
  12. import org.w3c.dom.Element;
  13. import org.w3c.dom.NamedNodeMap;
  14. import org.w3c.dom.Node;
  15. import org.w3c.dom.NodeList;
  16. import org.xml.sax.InputSource;
  17.  
  18. /* Name of the class has to be "Main" only if the class is public. */
  19. class Ideone
  20. {
  21. public static void main (String[] args) throws java.lang.Exception
  22. {
  23. try {
  24. //Simulamos con valores predefinidos
  25. String nombre= "AlgĂșn nombre";
  26. String constrasena= "Esta es la clave";
  27. String tipo= "UnTipo";
  28. String grupo= "NombreGrupo";
  29. System.out.println(nombre);
  30. System.out.println(constrasena);
  31. System.out.println(tipo);
  32. System.out.println(grupo);
  33.  
  34.  
  35. //String filepath = ("file.xml");
  36. DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
  37. DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
  38. Document doc = null;
  39.  
  40. /*
  41.   try {
  42.   doc = docBuilder.parse(filepath);
  43.   } catch (SAXException ex) {
  44.   Logger.getLogger(agregar.class.getName()).log(Level.SEVERE, null, ex);
  45.   }
  46.   */
  47.  
  48. //cargamos el xml desde String en vez de un filepath
  49. String xml = String.join("\n",
  50. "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><usuarios>",
  51. " <grupo id=\"2cm3\">",
  52. " <usuario id=\"admin\">",
  53. " <tipo>administrador</tipo>",
  54. " <userName>admin</userName>",
  55. " <password>admin</password>",
  56. " </usuario>",
  57. " </grupo>",
  58. " <grupo id=\"2cm4\">",
  59. " <usuario id=\"admin\">",
  60. " <tipo>administrador</tipo>",
  61. " <userName>admin</userName>",
  62. " <password>admin</password>",
  63. " </usuario>",
  64. " </grupo>",
  65. " </usuarios>"
  66. );
  67. //System.out.println(xml);
  68.  
  69.  
  70. InputSource is = new InputSource(new StringReader(xml));
  71. doc = docBuilder.parse(is);
  72.  
  73.  
  74. Node company = doc.getFirstChild();
  75. Node staff = doc.getElementsByTagName("grupo").item(1);
  76. NamedNodeMap attr = staff.getAttributes();
  77. Node nodeAttr = attr.getNamedItem("id");
  78. System.out.println("grupo"+nodeAttr.getTextContent());
  79. // Get the root element
  80.  
  81. Element usuario = doc.createElement("usuario");
  82. usuario.setAttribute("id", nombre);
  83. Element tip = doc.createElement("tipo");
  84. tip.appendChild(doc.createTextNode(tipo));
  85. usuario.appendChild(tip);
  86. Element name = doc.createElement("userName");
  87. name.appendChild(doc.createTextNode(nombre));
  88. usuario.appendChild(name);
  89. Element pass = doc.createElement("password");
  90. pass.appendChild(doc.createTextNode(constrasena));
  91. usuario.appendChild(pass);
  92. staff.appendChild(usuario);
  93.  
  94.  
  95. DOMSource source = new DOMSource(doc);
  96.  
  97.  
  98. // write the content into xml file
  99. /*
  100.   Transformer transformer = null;
  101.   try {
  102.   transformer = transformerFactory.newTransformer();
  103.   } catch (TransformerConfigurationException ex) {
  104.   Logger.getLogger(agregar.class.getName()).log(Level.SEVERE, null, ex);
  105.   }
  106.   StreamResult result = new StreamResult(new File(filepath));
  107.   */
  108.  
  109. //El resultado en String en vez de a un xml
  110. StringWriter writer = new StringWriter();
  111. StreamResult result = new StreamResult(writer);
  112. TransformerFactory transformerFactory = TransformerFactory.newInstance();
  113. Transformer transformer = transformerFactory.newTransformer();
  114. transformer.transform(source, result);
  115.  
  116. System.out.println("Done");
  117. //response.sendRedirect("admin");
  118.  
  119. System.out.println("\nRESULTADO:");
  120. System.out.println(writer.toString());
  121. } catch (Exception ex) {
  122. ex.printStackTrace();
  123. }
  124. }
  125. }
Success #stdin #stdout 0.24s 321408KB
stdin
Standard input is empty
stdout
Algún nombre
Esta es la clave
UnTipo
NombreGrupo
grupo2cm4
Done

RESULTADO:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><usuarios>
    <grupo id="2cm3">
    <usuario id="admin">
    <tipo>administrador</tipo>
    <userName>admin</userName>
    <password>admin</password>
    </usuario>
    </grupo>
    <grupo id="2cm4">
    <usuario id="admin">
      <tipo>administrador</tipo>
      <userName>admin</userName>
      <password>admin</password>
    </usuario>
    <usuario id="Algún nombre"><tipo>UnTipo</tipo><userName>Algún nombre</userName><password>Esta es la clave</password></usuario></grupo>
    </usuarios>