import java.io.*;
import java.util.*;
import org.w3c.dom.*;
-import org.w3c.dom.bootstrap.*;
public class Parser {
- private static final DOMImplementation domimp;
-
- static {
- DOMImplementationRegistry reg;
- try {
- reg = DOMImplementationRegistry.newInstance();
- } catch(Exception e) {
- throw(new Error(e));
- }
- DOMImplementation di = reg.getDOMImplementation("");
- if(di == null)
- throw(new RuntimeException("Could not get a DOM implemenation"));
- domimp = di;
- }
-
public class State {
- public final Document doc = domimp.createDocument(null, "dummy", null);
+ public final Document doc = DomUtil.document(null, "dummy");
public final PeekReader in;
private State(Reader in) {
return(doc.createElementNS(null, name));
}
- protected Attr makeattr(Document doc, Element el, String name, String val) {
- Attr a = doc.createAttributeNS(el.getNamespaceURI(), name);
- a.setValue(val);
- return(a);
- }
-
- protected Attr makeattr(Document doc, Element el, String name) {
- return(doc.createAttributeNS(el.getNamespaceURI(), name));
- }
-
protected String name(State s) throws IOException {
StringBuilder buf = new StringBuilder();
while(true) {
}
protected Attr attribute(State s, Element el) throws IOException {
- String nm = name(s);
+ Attr a = s.doc.createAttributeNS(null, name(s));
s.in.peek(true);
int c = s.in.read();
if(c != '=')
buf.append((char)s.in.read());
}
}
- return(makeattr(s.doc, el, nm, buf.toString()));
+ a.setValue(buf.toString());
+ return(a);
}
protected Element element(State s) throws IOException {
return(String.format("\\%03o", (int)c));
return(Character.toString((char)c));
}
-
- public static void main(String[] args) throws Exception {
- Parser p = new Parser();
- DocumentFragment f = p.parse(new FileReader(args[0]));
- javax.xml.transform.TransformerFactory fac = javax.xml.transform.TransformerFactory.newInstance();
- fac.setAttribute("indent-number", 2);
- javax.xml.transform.Transformer t = fac.newTransformer();
- t.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
- t.transform(new javax.xml.transform.dom.DOMSource(f), new javax.xml.transform.stream.StreamResult(System.out));
- System.out.println(t.getClass());
- }
}