edu.dlsu.SUMOs.util.Xml Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sigma-component Show documentation
Show all versions of sigma-component Show documentation
Sigma knowledge engineering system is an system for developing, viewing and debugging theories in first
order logic. It works with Knowledge Interchange Format (KIF) and is optimized for the Suggested Upper Merged
Ontology (SUMO) www.ontologyportal.org.
package edu.dlsu.SUMOs.util;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Xml
{
private static Element rootElement(String filename, String rootName)
{
FileInputStream fileInputStream = null;
try
{
fileInputStream = new FileInputStream(filename);
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(fileInputStream);
Element rootElement = document.getDocumentElement();
if(!rootElement.getNodeName().equals(rootName))
throw new RuntimeException("Could not find root node: "+rootName);
return rootElement;
}
catch(Exception exception)
{
throw new RuntimeException(exception);
}
finally
{
if(fileInputStream!=null)
{
try
{
fileInputStream.close();
}
catch(Exception exception)
{
throw new RuntimeException(exception);
}
}
}
}
public Xml(String filename, String rootName)
{
this(rootElement(filename,rootName));
}
private Xml(Element element)
{
this.name = element.getNodeName();
this.content = element.getTextContent();
NamedNodeMap namedNodeMap = element.getAttributes();
int n = namedNodeMap.getLength();
for(int i=0;i children = nameChildren.get(name);
if(children==null)
{
children = new ArrayList();
nameChildren.put(name,children);
}
children.add(child);
}
public String name()
{
return name;
}
public String content()
{
return content;
}
public Xml child(String name)
{
List children = children(name);
if(children.size()!=1) throw new RuntimeException("Could not find individual child node: "+name);
return children.get(0);
}
public List children(String name)
{
List children = nameChildren.get(name);
return children==null ? new ArrayList() : children;
}
public String string(String name)
{
String value = nameAttributes.get(name);
if(value==null) throw new RuntimeException("Could not find attribute: "+name+", in node: "+this.name);
return value;
}
public int integer(String name)
{
return Integer.parseInt(string(name));
}
private String name;
private String content;
private Map nameAttributes = new HashMap();
private Map> nameChildren = new HashMap>();
}