diff -r 000000000000 -r e214f04abb98 htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/ProcessPage.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/htmlpage/src/main/java/org/apidesign/bck2brwsr/htmlpage/ProcessPage.java Mon Sep 24 12:39:21 2012 +0200
@@ -0,0 +1,61 @@
+package org.apidesign.bck2brwsr.htmlpage;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+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;
+
+class ProcessPage {
+ private final Map ids2Elems = new TreeMap();
+
+ public Set ids() {
+ return Collections.unmodifiableSet(ids2Elems.keySet());
+ }
+
+ public String tagNameForId(String id) {
+ return ids2Elems.get(id);
+ }
+
+ public static ProcessPage readPage(InputStream is) throws IOException {
+ DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
+ f.setValidating(false);
+ f.setIgnoringComments(true);
+
+ Document doc = null;
+ try {
+ DocumentBuilder b = f.newDocumentBuilder();
+ doc = b.parse(is);
+ } catch (IOException ex) {
+ throw ex;
+ } catch (Exception e) {
+ throw new IOException(e);
+ }
+ Element root = doc.getDocumentElement();
+
+ ProcessPage pp = new ProcessPage();
+ pp.seekForIds(root);
+ return pp;
+ }
+
+ private void seekForIds(Element e) {
+ String val = e.getAttribute("id");
+ if (val != null && !val.isEmpty()) {
+ String prev = ids2Elems.put(val, e.getTagName());
+ }
+ NodeList arr = e.getChildNodes();
+ for (int i = 0; i < arr.getLength(); i++) {
+ final Node n = arr.item(i);
+ if (n instanceof Element) {
+ seekForIds((Element)n);
+ }
+ }
+ }
+}