Usando Java para Analisar XML

Eu criei um script PHP que analisa um arquivo XML. Isso não é fácil de usar e eu queria implementá-lo em Java.

Dentro do primeiro elemento, existem várias contagens dewfs:member elementos pelos quais repito:

foreach ($data->children("wfs", true)->member as $member) { }

Isso foi fácil de fazer com Java:

NodeList wfsMember = doc.getElementsByTagName("wfs:member");
for(int i = 0; i < wfsMember.getLength(); i++) { }

Abri o arquivo XML como este

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(WeatherDatabaseUpdater.class.getResourceAsStream("wfs.xml"));

Então eu preciso obter um atributo de um elemento chamadoobserverdProperty. No PHP, isso é simples:

$member->
    children("omso", true)->PointTimeSeriesObservation->
    children("om", true)->observedProperty->
    attributes("xlink", true)->href

Mas em Java, como faço isso? Preciso usargetElementsByTagName e passe por eles se eu quiser aprofundar a estrutura? `

No PHP, o script inteiro parece o seguinte.

foreach ($data->children("wfs", true)->member as $member) {
    $dataType = $dataTypes[(string) $member->
                    children("omso", true)->PointTimeSeriesObservation->
                    children("om", true)->observedProperty->
                    attributes("xlink", true)->href];

    foreach ($member->
            children("omso", true)->PointTimeSeriesObservation->
            children("om", true)->result->
            children("wml2", true)->MeasurementTimeseries->
            children("wml2", true)->point as $point) {

        $time = $point->children("wml2", true)->MeasurementTVP->children("wml2", true)->time;
        $value = $point->children("wml2", true)->MeasurementTVP->children("wml2", true)->value;

        $data[$dataType][] = array($time, $value)
    }
}

No segundoforeach Percorro os elementos de observação e obtenho os dados de tempo e valor. Então eu salvo em uma matriz. Se eu precisar percorrer os elementos em Java da maneira que descrevi, isso é muito difícil de implementar. Eu não acho que seja esse o caso, então alguém poderia me aconselhar como implementar algo semelhante em Java?

questionAnswers(6)

yourAnswerToTheQuestion