JavaScript JSON Selector Engine

Daten im JSON-Format können ziemlich komplex sein und die Analyse (Parsing) aufwendig machen. Nicht selten kommt dann der Wunsch nach einer Möglichkeit auf, die gewünschten Daten einfacher zu selektieren. Die erfreuliche Nachricht ist, dass es eine solche Möglichkeit in Form einer „selector engine“ gibt. Mit JSON Select können komplexe JavaScript-Objekte mit CSS-ähnlichen Selektoren durchforstet werden. Ich habe dazu ein kleines Beispiel vorbereitet.
JavaScript JSON Selector Engine weiterlesen

How to get node attributes with Java SAX XML parser

Parsing XML from a String

import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
 
public class Main {
 
  public static void main(String[] args) throws Exception {
    // Prepare input stream
    String text = "<person number=\"72\"><name>Benny</name></person>";
 
    // Read input stream
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(new InputSource(new StringReader(text)));
 
    // Output data
    NodeList elementsByTagName = document.getElementsByTagName("person");
    for (int i = 0; i &lt; elementsByTagName.getLength(); i++) {
      Node node = elementsByTagName.item(i);
      Element element = (Element) node;
      String attribute = element.getAttribute("number");
      System.out.println(attribute);
    }
  }
}

Parsing XML from a File

package com.welovecoding.parse.xml;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
 
public class Main {
 
  public static void main(String[] args) throws Exception {
    // Prepare input stream
    File file = new File("persons.xml");
    InputStream inputStream = new FileInputStream(file);
    Reader reader = new InputStreamReader(inputStream, "UTF-8");
    InputSource is = new InputSource(reader);
    is.setEncoding("UTF-8");
 
    // Read input stream
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(is);
 
    // Output data
    NodeList elementsByTagName = document.getElementsByTagName("person");
    for (int i = 0; i < elementsByTagName.getLength(); i++) {
      Node node = elementsByTagName.item(i);
      Element element = (Element) node;
      String attribute = element.getAttribute("number");
      System.out.println(attribute);
    }
  }
}

Result

72

Parse some HTML tags with a Java SAX XML parser

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.

Java XML SAX Parser

Um mit Java eine XML Datei zu parsen, empfehle ich einen SAX Parser, da dieser schneller ist als ein DOM Parser. Die Implementierung eines SAX Parsers in Java ist einfach. Man muss nur eine routinemäßige Initialisierung vornehmen und einen eigenen Handler schreiben. Wie das funktioniert, zeigt mein nachfolgendes Code-Beispiel. Ich erkläre ebenfalls, wie man den SAX Parser in Google Android verwenden kann!
Java XML SAX Parser weiterlesen