package edu.mbl.jif.imaging.meta;
import org.w3c.dom.Node;
import javax.imageio.metadata.IIOMetadata;
import org.w3c.dom.NamedNodeMap;
public class IIOMetadataDisplay
{
//public IIOMetadataDisplay () {
//}
public static void displayIIOMetadata (IIOMetadata meta) {
displayMetadata(meta.getAsTree("javax_imageio_1.0"), 0);
}
public static void displayIIOMetadataNative (IIOMetadata meta) {
displayMetadata(meta.getAsTree(meta.getNativeMetadataFormatName()), 0);
}
static void indent (int level) {
for (int i = 0; i < level; i++) {
System.out.print(" ");
}
}
static void displayMetadata (Node node, int level) {
indent(level); // emit open tag
System.out.print("<" + node.getNodeName());
NamedNodeMap map = node.getAttributes();
if (map != null) { // print attribute values
int length = map.getLength();
for (int i = 0; i < length; i++) {
Node attr = map.item(i);
System.out.print(" " + attr.getNodeName() + "=\"" +
attr.getNodeValue() + "\"");
}
}
Node child = node.getFirstChild();
if (child != null) {
System.out.println(">"); // close current tag
while (child != null) { // emit child tags recursively
displayMetadata(child, level + 1);
child = child.getNextSibling();
}
indent(level); // emit close tag
System.out.println("</" + node.getNodeName() + ">");
} else {
System.out.println("/>");
}
}
}