我写了个解析XML的函数,将解析器实例化,并作操作,如下
public void parse(String filename) throws Exception {
// 将我们的解析器对象化
ConfigParser handler = new ConfigParser();
// 获取SAX工厂对象
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setNamespaceAware(false);
factory.setValidating(false);
// 获取SAX解析
SAXParser parser = factory.newSAXParser();
try {
// 将解析器和解析对象xml联系起来,开始解析
parser.parse(filename, handler);
// 获取解析成功后的属性
props = handler.getProps();
} finally {
factory = null;
parser = null;
handler = null;
}
}
但是在我想取得我的XML内容时我用的函数是:
public ReadConfigXml(String url) {
ParseXML myRead = new ParseXML();
try {
myRead.parse(url);
props = new Properties();
props = myRead.getProps();
} catch (Exception e) {
e.printStackTrace();
}
}最后执行ReadConfigXml r = new ReadConfigXml("ConnectToDB.xml");时报错10.5.24.154java.net.MalformedURLException: no protocol: ConnectToDB.xml
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at gnu.xml.aelfred2.XmlParser.pushURL(XmlParser.java:3414)
at gnu.xml.aelfred2.XmlParser.doParse(XmlParser.java:159)
at gnu.xml.aelfred2.SAXDriver.parse(SAXDriver.java:320)
at gnu.xml.aelfred2.XmlReader.parse(XmlReader.java:294)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at xml.ParseXML.parse(ParseXML.java:27)
at xml.ReadConfigXml.<init>(ReadConfigXml.java:11)
at db.ConnectToDB.<init>(ConnectToDB.java:11)
at db.dao.SNMPDAO.<init>(SNMPDAO.java:20)
at server.MyServerDB.run(MyServerDB.java:22)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)我的XML语句是:
<?XML version="1.0" encoding="UTF-8"?>
<REPORTENV>
<DATASOURCE>
<host>127.0.0.1</host>
<database>Captor</database>
<USERNAME>sa</USERNAME>
<password>sa</password>
</DATASOURCE>
</REPORTENV>请高手帮忙,谢谢~