воскресенье, 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();    
}

понедельник, 24 января 2011 г.

ssl and java

Что такое ssl.

Примеры сервера и клиента можно посмотреть здесь.

Параметры при запуске можно подгрузить так:

// -Djavax.net.ssl.keyStore=mySrvKeystore
System.setProperty("javax.net.ssl.keyStore", "mySrvKeystore");
// -Djavax.net.ssl.keyStorePassword
System.setProperty("javax.net.ssl.keyStorePassword", "123456");
// -Djava.protocol.handler.pkgs
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
// -Djavax.net.debug
System.setProperty("javax.net.debug", "ssl");




Создаем файл ключей:
Keytool-genkey-файл_ключей mySrvKeystore-keyalg RSA
Создаем хранилище:

keytool -export -keystore фаил_ключей -alias хранилище -file test.cer
Создаем сертификат для нашего клиента:

keytool -import -alias хранилище -file созданый_сертификат -keystore clienttruststore.jks -storepass "unicapassword"