日期:2014-05-17  浏览次数:20631 次

关于XML解析的问题,请教高手
我有一个xml文件内容是这样的
---------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<appconfig>
<sqlCfg>
<path></path>
</sqlCfg>

<!-- 数据库连接配置文件路径 -->
<dataBaseCfg id="text"><![CDATA[./database.xml]]></dataBaseCfg>
<dataBaseCfg id="text1"><![CDATA[./database.xml]]></dataBaseCfg>

</appconfig>
----------------------------------------------
现在我要将dataBaseCfg节点解析存入一个map<String, String>中,怎么处理,我使用的digester解析。

在线等待解决。

------解决方案--------------------
http://www.blogjava.net/alex/archive/2006/09/06/68148.html
仅供参考
------解决方案--------------------
参考下以下代码:
Java code

public class Test {
    private static Logger logger = Logger.getLogger(Test.class.getName());
    public  static Map dataBase=new HashMap();;
    /**
     * @param args
     * @throws SAXException 
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException, SAXException {
        Digester digester = new Digester();
        digester.setValidating(false);
        digester.addRule("appconfig/dataBaseCfg", new MyRule("put",2));
        digester.addRule("appconfig/dataBaseCfg", new CallParamRule(0,"id"));
        digester.addRule("appconfig/dataBaseCfg", new CallParamRule(1));
        digester.parse(Test.class.getResourceAsStream("config.xml"));
        System.out.println(dataBase);
    }
    
}
class MyRule extends CallMethodRule{

    public MyRule(String methodName,int param) {
        super(methodName, param);
    }
    
    @Override
    public void begin(Attributes attributes) throws Exception {
        digester.push(Test.dataBase);
        super.begin(attributes);
    }
    
    @Override
    public void end() throws Exception {
        super.end();
        digester.pop();
    }
}

------解决方案--------------------
楼上+1