XML-Attribute 'value' von 'key' auslesen

Hallo Freunde!

Ich stehe gerade vor einem Problem mit XML, um genau zu sein die Attributwerte vom Feld ‘value’, welches zu ‘key’ gehört auszulesen. Mein momentaner Code sieht so aus:

	public static void print(String key) {
		try {
			
			DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder =  fac.newDocumentBuilder();
			fac.setNamespaceAware(false);
			Document doc = builder.parse("languages/lang_de.xml");
						
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

Nur leider habe ich nun keine Ahnung, wie ich weiter vorgehen sollte, da es kaum Anleitungen gibt, wo erklärt wird, wie man an ‘value’ Werte ran kommt, welche man über ‘key’ erfasst.
Die XML-Datei sieht z.B. so aus:

[XML]




<messages>

    <!-- Messages -->
    <message key="login" value="&7[0] ist dem Spiel beigetreten." />
    <message key="logout" value="&7[0] hat das Spiel verlassen." />
    <message key="kick" value="&7[0] wurde aus dem Spiel geworfen!" />
    <message key="permban" value="&7[0] wurde permanent vom Server gebannt!" />
    <message key="tempban" value="&7[0] wurde temporär vom Server gebannt!" />   
    
</messages>
[/XML]

Versteht ihr, was ich meine? Ich möchte nun, um die einzelnen Nachrichten ausgeben zu lassen, über den ‘key’-Wert an die ‘value’-Strings zu gelangen.

Mit freundlichen Grüßen,
Panjab.

Schneller wäre SAX, einfacher ein Object-Mapping wie das von Xstream. Aber in deinem Fall solltest du erstmal alle Messages holen und dann solange iterieren bis du den entsprechenden Knoten hast.

Ca. so

Document doc = builder.parse("languages/lang_de.xml");
NodeList messages = doc.getElementsByTagName("message");

int len = messages.getLength();
String myKey = "kick";
for(int i = 0; i < len; i++) {
  Node cur = messages.item(i);
  
  Node key = cur.getAttributes().getNamedItem("key");
  if(key != null && myKey.equals(key.getValue()) {
    Node valueNode = cur.getAttributes().getNamedItem("value");
    return valueNode != null ? valueNode.getValue() : null;
  }
}

Hab’s jetzt nur so runter getippt. Aber ich denke du verstehst wie’s geht.