Jeg er igang med at lave en IRC bot. Folk skal kunne logge ind med deres nick og et password. Brugerene bliver gemt i en XML fil der ser således ud:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<users>
<user>
<nick>ismetteren</nick>
<pass>admin</pass>
<level>2</level>
</user>
<user>
<nick>ismettern</nick>
<pass>admin2</pass>
<level>2</level>
</user>
</users>
Jeg bruger DOM til at håntere XML filen.
Jeg vil gerne kunne få fat i et "user" element, hvor nick elementets child element(det der står mellem de 2 nick tags) er == [noget jeg vælger]. Altså, finde en bruger/("user") ved at kende brugerens nick.
Jeg er kommet frem til følgende funktion(er godt klar over at den ikke virker, og kan til dels også godt se hvorfor)
- private Node getXMLUser(String user, Node n) {
- if(n.getNodeType() == Node.TEXT_NODE && n.getNodeName().equalsIgnoreCase("nick")) {
- if(n.getNodeValue().equalsIgnoreCase(user)) {
- return n.getParentNode().getParentNode();
- }
- }
- else if(n.getNodeType() == Node.ELEMENT_NODE) {
- NodeList list = n.getChildNodes();
- for(int i = 0; i < list.getLength(); i++) {
- return getXMLUser(user, list.item(i));
- }
- }
- //if we reach this, the user couldent be found
- return null;
- }
Denne funtion rejser træet igennem, og leder efter et "nick" tag, vis indhold(childnode) er = en text streng.
Det problem, som jeg godt selv kan se er at vis den når en leaf-node og den ikke har fundet det den ledte efter, retunere den bare null. Jeg vil først have den til at retunere null når den har søgt ALLE leafnodes igennem, og stadig ikke har fundet hvad den ledte efter.
Men så vidt jeg kan se, burde den da retunere den rigte bruger, vis brugeren tilfældigvis skulle være den allerførste bruger i XML filen. Det gør den heller ikke.
Er der nogle der ved hvad jeg har gjort galt, eller kender en anden, bedre måde at søge i et træ?
Har desværre stadig ingen UP
, måske ville det være en ide at lave spørgsmål med 0 UP tilladt, så man ikke behøver at oprette en kommentar vis man ikke har nogle.
Indlæg senest redigeret d. 21.06.2009 15:09 af Bruger #13669