03. december 2003 - 14:20
Der er
2 kommentarer og 1 løsning
Configuration i XML eller tilsvarende?
Hejsa! Jeg har i lang tid kunnet nøjes med java.util.Property som klasse til indlæsning af konfiguration. Det fungerer fint, sålænge konfigurationen har været i ét enkelt niveau. Nu har jeg dog behov for at lave flere niveauer i konfigurationen, og ønsker ikke at skulle bruge et stort antal forskellige filer. Eksempel: [config_1] parameter_1 = value_1 parameter_2 = value_2 parameter_3 = value_3 [config_2] parameter_1 = value_4 parameter_2 = value_5 parameter_3 = value_6 Jeg tænkte, at dette nok kunne gøres i XML: <configs> <config id="1"> <param> <label>parameter_1</label> <value>value_1</value> </param> <param> <label>parameter_2</label> <value>value_2</value> </param> <param> <label>parameter_3</label> <value>value_3</value> </param> </config> <config id="2"> <param> <label>parameter_1</label> <value>value_4</value> </param> <param> <label>parameter_2</label> <value>value_5</value> </param> <param> <label>parameter_3</label> <value>value_6</value> </param> </config> </configs> Jeg har dog ikke arbejdet med XML i java før, så hvordan gør jeg nemmest? Eller er der et andet tool (klasse) til samme formål?? /Crax
Annonceindlæg fra Kingston Technology
03. december 2003 - 14:35
#1
Ja der er fuld XML support (både DOM og SAX) indbygget i Java 1.4.x ! Og i tidligere versioner skal man bare downloade f.eks. Xerces og så virker det også fint. Vil du gerne se et eksempel til at læse den konfig fil ?
03. december 2003 - 14:50
#2
Et hurtigt lille parse eksempel: import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class Config { public static void main(String[] args) { readConfig(); } private static void readConfig() { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File("C:\\config.xml")); NodeList elements = doc.getElementsByTagName("config"); for (int i = 0; i < elements.getLength(); i++) { Node element = elements.item(i); System.out.println("id = " + element.getAttributes().getNamedItem("id").getNodeValue()); NodeList subelements = element.getChildNodes(); for (int j = 0; j < subelements.getLength(); j++) { NodeList subelements2 = subelements.item(j).getChildNodes(); for (int k = 0; k < subelements2.getLength(); k++) { String tag = subelements2.item(k).getNodeName(); if (tag.equals("label")) { System.out.println("label = " + subelements2.item(k).getFirstChild().getNodeValue()); } if (tag.equals("value")) { System.out.println("value = " + subelements2.item(k).getFirstChild().getNodeValue()); } } } } } catch (FactoryConfigurationError e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return; } }