Avatar billede crax Nybegynder
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
Avatar billede arne_v Ekspert
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 ?
Avatar billede arne_v Ekspert
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;
    }
}
Avatar billede arne_v Ekspert
26. december 2003 - 16:52 #3
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester