我需解析的xml文件格式如下:
<?xml version="1.0" encoding="gb2312"?>
<xmlSet>
<db name = "aaa">
<table name="test1">
<field name="id"></field>
<field name="name"></field>
<field name="age"></field>
</table>
<table name="test2">
<field name="id"></field>
<field name="name"></field>
<field name="age"></field>
</table>
</db>
<db name = "bbb">
<table name="test3">
<field name="id"></field>
<field name="name"></field>
<field name="age"></field>
</table>
<table name="test4">
<field name="id"></field>
<field name="name"></field>
<field name="age"></field>
</table>
</db>
</xmlSet>

解决方案 »

  1.   

    存hashtable里面吧?看结构好像应该是3层的hashtable。第一层key是db name,value是table的hashtable,第二层key是table name,value是field的hashtable,第三层key是field name,value是属性的值    public static Hashtable<String, Hashtable<String, String>> codeTable = new Hashtable<String, Hashtable<String, String>>();    public static void init(String realPath) throws ParserConfigurationException, SAXException, IOException {
                    DocumentBuilderFactory newFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder newBuilder = newFactory.newDocumentBuilder();
            Document doc = newBuilder.parse(realPath);  //realpath放xml文件的路径,可以用listener初始化
             Element root = doc.getDocumentElement();
            NodeList dbNode = root.getElementsByTagName("db");
                    for (int i = 0; i < dbNode.getLength(); i++) {
                Hashtable itemTable = new Hashtable();
                Element eleDb = (Element) dbNode.item(i);
                codeTable.put(eleDb.getAttribute("name"), itemTable);
                NodeList tableNode = eleDb.getElementsByTagName("table");
                for (int j = 0; j < tableNode.getLength(); j++) {
                    Element eleCodeItem = (Element) tableNode.item(j);
                    Hashtable fieldTable = new Hashtable();
                    itemTable.put(eleCodeItem.getAttribute("name"), fieldTable);
                    NodeList fieldNode = eleCodeItem.getElementsByTagName("field");
                    for(int m = 0 ; m < fieldNode.getLength(); m ++){
        Element eleFieldItem = (Element) fieldNode.item(m);
                        fieldTable.put(eleFieldItem.getAttribute("name"), value);                }
                }
            }
            
        }
      

  2.   

    谢谢楼上的. public static Hashtable <String, Hashtable <String, String > > codeTable = new Hashtable <String, Hashtable <String, String > >(); 能解释一下这句吗?谢谢.
      

  3.   

    不给分还让我解释……哎……就是定义一个hashtable, <String, Hashtable  <String, String  >  >这个不加也可以,不过程序会有警告,就是表示hashtable里面放的是什么元素
      

  4.   

    to mxkong 能给一个例子吗?谢谢!