Leitura de XML com Java

Fala galera, bom dia!

Estou com uma certa dúvida quanto à leitura de XML, o que acontece é o seguinte, eu tenho um arquivo com o seguinte conteúdo:

< agenda> PRECISO IMPRIMIR ESSE

<contato id="0"> **DEPOIS ESSE**
    <nome id="3">Matheus</nome> 
    <numero id="4">995575991</numero> **E POR ULTIMO ESSE**
</contato>

<contato id="2">
    <nome>Flavia</nome>
    <numero>inexistente</numero>
</contato>

< agenda>

O que eu preciso é que quando o usuário me passar o ID 4, eu imprima o root, que no caso é agenda. imprima também o child dele que no caso é o contato de ID 0 e também imprima o número que é o próprio ID 4.

Isso é possível de se realizar?

É totalmente possível mas é necessário que você explique como está gerando o xml para podermos te ajudar.

É um arquivo que eu escrevi manualmente, se encontra no meu desktop. Não sei se é exatamente isso que você quer saber, mas foi o que entendi.

Boa tarde amigo.

Desculpe a demora em responder, mas antes tarde do que nunca…kkkkkkkkkk…criei dois métodos que fazem exatamente o que vc citou, se ainda precisar de disto…aqui está:

{

public void xmltest() {
    String path = "C:\\Users\\villagram\\Desktop\\mgenteluci.xml";
    File file = new File(path);
    System.out.println(xmlStrip(file));
}

public String xmlStrip(File file) {
    try {
        BufferedReader reader = new BufferedReader(new FileReader(file));
        Iterator<String> iterator = reader.lines().iterator();
        String lines = "";
        String resultado = "";
        while (iterator.hasNext()) {
            lines += iterator.next();
        }
        if (lines.contains("<numero id=\"4\">")) {
            resultado += "<agenda>\n";
            resultado += findStringXML("<contato id=\"\\d+\">", lines) + "\n";
            resultado += findStringXML("<numero id=\"4\">\\d+</numero>", lines) + "\n";
            resultado += "</contado>\n";
            resultado += "</agenda>";
        }
        return resultado;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

public String findStringXML(String pattern, String lines) {
    Pattern p1 = Pattern.compile(pattern);
    Matcher m1 = p1.matcher(lines);
    String resultado = "";
    if (m1.find()) {
        resultado = m1.group();
    }
    return resultado;
}

}