воскресенье, 30 января 2011 г.

Парсинг погоды с gismeteo.ru . DOM/java

Пример файла - http://informer.gismeteo.ru/getcode/xml.php?id=27612

Собственно задача, прочитать файл и пропарсить его. Полученные данные можно записать в массив для дальнейшей обработки.

private Document document = null;   

private String link = "http://informer.gismeteo.ru/xml/27612_1.xml"; 

document = parserXML(link);

domParse(document);

Читаем файл с помощью класса URL, и преобразовываем в xml документ:

public Document parserXML(String link) throws SAXException,
IOException,
ParserConfigurationException{
URL yahoo = new URL(link);
HttpURLConnection conn = (HttpURLConnection) yahoo.openConnection();
InputSource sourse = new InputSource(conn.getInputStream());
return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(sourse);
}

Наш парсер, выбирает все необходимые данные, над которыми можно будет работать дальше:

public void domParse(Node doc){
                    
NodeList nodelist = doc.getChildNodes();
        
for (int i = 0, cnt = nodelist.getLength(); i < cnt; i++) {
                        
Node node = nodelist.item(i);
                          
if (node.getNodeType() == Node.ELEMENT_NODE
 || node.getNodeType() == Node.TEXT_NODE){
           
String element_name = node.getNodeName();
        
if(element_name.equals("TOWN")){
// get TOWN
// получаем атрибут элемента TOWN
System.out.println("sname = " + getAttribute(node, "sname"));
} else if(element_name.equals("FORECAST")){    
// get FORECAST
} else if (element_name.equals("PHENOMENA")) {
// get PHENOMENA
} else if(element_name.equals("PRESSURE")){
// get PRESSURE
} else if(element_name.equals("TEMPERATURE")){
// get TEMPERATURE
} else if(element_name.equals("WIND")){
// get WIND
} else if(element_name.equals("RELWET")){
// get RELWET
}  
   
domParse(node);
    
}

Для получения атрибута элемента:

private String getAttribute(Node node, String attribute){
return node.getAttributes().getNamedItem(attribute).getNodeValue();    
}

Комментариев нет:

Отправить комментарий