Advertisement
kijato

Xml.java

Jan 1st, 2025 (edited)
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.82 KB | Source Code | 0 0
  1. /*
  2.  
  3. GOTO Xml_teszt.java
  4.  
  5. https://szit.hu/doku.php?id=oktatas:programozas:java:java_xml
  6. http://faragocsaba.hu/java-extlibs-xml
  7. https://javaoktato.com/java_2ed/chapter_jaxb.pdf
  8. https://labex.io/tutorials/java-how-to-access-elements-and-attributes-in-an-xml-document-with-java-413933
  9. https://dom4j.github.io/javadoc/2.1.4/
  10.  
  11. */
  12.  
  13. import java.io.*;
  14. import java.util.*;
  15.  
  16. import org.dom4j.*;
  17. import org.dom4j.io.*;
  18. import org.dom4j.dom.*;
  19.  
  20. public class Xml
  21. {
  22.     protected Document document;
  23.     protected Element root;
  24.     protected int levelCounter = 0;
  25.     protected StringBuilder xmlAsText = new StringBuilder();
  26.  
  27.     public Xml ( File f ) throws DocumentException
  28.     {
  29.         try
  30.         {
  31.             SAXReader reader = new SAXReader();
  32.             document = reader.read( f );
  33.         }
  34.         catch ( DocumentException e )
  35.         {
  36.             e.printStackTrace();
  37.         }
  38.         init();
  39.     }
  40.  
  41.     public Xml ( String fname ) throws DocumentException
  42.     {
  43.         this( new File( fname ) );
  44.     }
  45.  
  46.     private void init ()
  47.     {
  48.         root = document.getRootElement();
  49.     }
  50.  
  51.     public void write ( String fname ) throws Exception
  52.     {
  53.         try
  54.         {
  55.             FileOutputStream newFile = new FileOutputStream( fname );
  56.             XMLWriter writer = new XMLWriter( newFile, OutputFormat.createPrettyPrint() );
  57.             //document = ( Document) ( ( DOMDocument) document ).setXmlStandalone(true);
  58.             writer.write( document );
  59.         }
  60.         catch ( Exception e )
  61.         {
  62.             e.printStackTrace();
  63.         }
  64.     }
  65.  
  66.     /* Fast looping
  67.     [ https://dom4j.github.io/#looping ]
  68.      */
  69.  
  70.     public void treeWalk()
  71.     {
  72.         treeWalk( document );
  73.     }
  74.  
  75.     public void treeWalk( Document document )
  76.     {
  77.         treeWalk( document.getRootElement() );
  78.     }
  79.  
  80.     public void treeWalk( Element element )
  81.     {
  82.         if ( levelCounter == 0 )
  83.         {
  84.             xmlAsText.append( "[" + levelCounter + "] " + element.getName() + " " + element.attributes().size() + "\n" );
  85.         }
  86.         levelCounter++;
  87.         String previousParent = "";
  88.         String indent="   ";
  89.         for (int i = 0; i < element.nodeCount(); i++)
  90.         {
  91.             Node node = element.node( i );
  92.             if (node instanceof Element)
  93.             {
  94.                 previousParent = node.getParent().getName();
  95.                 treeWalk( (Element) node );
  96.             }
  97.             else
  98.             {   //if ( node.getText() != null && ! node.getText().equals("") )
  99.                 //if ( ! node.getText().trim().equals("") )
  100.                 if ( previousParent != element.getName() )
  101.                 {
  102.                     xmlAsText.append( indent.repeat(levelCounter) +
  103.                                     "[" + levelCounter + "] " +
  104.                                     element.getName() +
  105.                                     ( ! node.getText().trim().equals("") ? " '" + node.getText().trim() + "'" : "" ) + "\n"
  106.                                     );
  107.                     for (int j = 0; j < element.attributes().size(); j++)
  108.                     {
  109.                         Attribute a = element.attribute(j);
  110.                         xmlAsText.append( indent.repeat(levelCounter) +
  111.                                         "[" + levelCounter + "] {" +
  112.                                         a.getName() + " '" +
  113.                                         a.getValue() + "'} " + "\n"
  114.                                         );
  115.                     }
  116.                 }
  117.             }
  118.         }
  119.         levelCounter--;
  120.     }
  121.  
  122. }
  123.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement