Benny's Blog
Navigation: Home » Programmierung
6. Mai 2012

In my article “Create GraphML XML file with Java” I showed how to write a Graph to a GraphML-compatible XML file. Now I want to show you how you can write a GraphML-compatible file that can be used in the yEd Graph Editor to get visualized later.

…weiterlesen

5. Mai 2012

Parsing XML with Java is very simple. If you want to parse some HTML tags, then you just have to add a root element around those tags (to make it a valid XML structure) and then you can use the Java SAX XML parser.

Code

import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
 
public class NewMain {
 
  public static void main(String[] args) throws Exception {
    String html = "<h1>Headline</h1><p><b>Hello World.</b><b>This is a test.</b></p>";
    html = "<root>" + html + "</root>";
 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(new InputSource(new StringReader(html)));
    NodeList elementsByTagName = document.getElementsByTagName("b");
    for (int i = 0; i < elementsByTagName.getLength(); i++) {
      Node element = elementsByTagName.item(i);
      String text = element.getTextContent();
      System.out.println(text);
    }
  }
}

Result

Hello World.
This is a test.
Tags: Java, , , , ,
4. Mai 2012

With Blueprints it is very easy to create a XML file following the GraphML standard. All you need is this:

import com.tinkerpop.blueprints.pgm.Vertex;
import com.tinkerpop.blueprints.pgm.impls.tg.TinkerGraph;
import com.tinkerpop.blueprints.pgm.util.io.graphml.GraphMLWriter;
import java.io.FileOutputStream;
import java.io.OutputStream;
 
public class App {
 
  private static final String OUTPUT_FILE = "./res/graph.graphml";
 
  public static void main(String[] args) throws Exception {
    OutputStream out = new FileOutputStream(OUTPUT_FILE);
    TinkerGraph graph = new TinkerGraph();
 
    Vertex source = graph.addVertex("1");
    Vertex target = graph.addVertex("2");
    graph.addEdge("3", source, target, "connection");
 
    GraphMLWriter writer = new GraphMLWriter(graph);
    writer.outputGraph(out);
  }
}

This is what you will get then:

graph.graphml

<?xml version="1.0" ?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns">
  <graph id="G" edgedefault="directed">
    <node id="2"></node>
    <node id="1"></node>
    <edge id="3" source="1" target="2" label="connection"></edge>
  </graph>
</graphml>
3. Mai 2012

With Java 7 it is very easy to read and write files. If you want to put a string into a file, then you can do the following:

Version 1

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
 
public class JavaApplication{
  public static void main(String[] args) throws IOException {
    String text = "Hello World.";
    Path target = Paths.get("C:/dev/temp/test.txt");
 
    InputStream is = new ByteArrayInputStream(text.getBytes());
    Files.copy(is, target, StandardCopyOption.REPLACE_EXISTING);
  }
}

You can also do this:

Version 2

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
 
public class JavaApplication6 {
 
  public static void main(String[] args) throws IOException {
    String text = "Hello World.";
    Path target = Paths.get("C:/dev/temp/test.txt");
 
    Path file = Files.createFile(target);
    Files.write(file, text.getBytes(), StandardOpenOption.WRITE);
  }
}

In older Java versions you can do it like this (but you should use some try-catch-blocks to close the streams):

Version 3

import java.io.*;
 
public class JavaApplication{
 
  public static void main(String[] args) throws IOException {
    String text = "Hello World.";
    File target = new File("C:/dev/temp/test.txt");
 
    FileOutputStream fos = new FileOutputStream(target, false);
    BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fos));
    br.write(text);
    br.flush();
    br.close();
    fos.flush();
    fos.close();
  }
}

With Java 7 you don’t need try-catch-blocks because you can use try-with-resources:

Version 4

import java.io.*;
 
public class JavaApplication{
 
  public static void main(String[] args) throws IOException {
    String text = "Hello World.";
    File target = new File("C:/dev/temp/test.txt");
 
    try (FileOutputStream fos = new FileOutputStream(target, false)) {
      try (BufferedWriter br = new BufferedWriter(new OutputStreamWriter(fos))) {
        br.write(text);
        br.flush();
      }
      fos.flush();
    }
  }
}

Version 5

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
 
public class JavaApplication {
 
  public static void main(String[] args) {
    String text = "Hello World.";
    File target = new File("C:/dev/temp/test.txt");
 
    FileWriter writer = null;
    try {
      writer = new FileWriter(target, false);
      writer.write(text);
    } catch (IOException ex) {
      Logger.getLogger(JavaApplication.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
      if (writer != null) {
        try {
          writer.close();
        } catch (IOException ex) {
          Logger.getLogger(JavaApplication.class.getName()).log(Level.SEVERE, null, ex);
        }
      }
    }
  }
}
Tags: Java, , , , ,
2. Mai 2012

In my post “How to parse GraphML files with a cool Java library” I showed how to parse a GraphML XML file. In this post I want to show you, how you can visualize it. All you need is the yEd – Graph Editor and some extra markup in your XML file.

…weiterlesen

1. Mai 2012

I’ve found this great GraphML reader and writer library: Blueprints. There is also a good documentation on how to use the GraphML library for reading XML-encoded graphs. Anyway, I think my example is better. :-)

…weiterlesen