18 Ekim 2013 Cuma

JAVA DA XML PARSE ETME (XPATH)

Java da XML parse etmenin birkaç metodu olmakla beraber bunların bazıları;
            -DOM  Parser
            -SAX Parser
            -JAXP
XPath bir W3C standardı olup XML dokümanının içinde ki bilgileri elde etmek için kullanılır. Küçük bir programlama dili gibi metodları, testleri ve ifadeleri vardır.
Bir XML dosyasını URL den veya dosyadan okuyabiliriz. Okuma mantığı her zaman aynıdır. Aşağıda yazdığım kodlar URL den çekilen bir XML dosyasının parse edilişidir. XPath ile alâkalı detaylı bilgiye buradan ulaşabilirsiniz. Biz lafı fazla uzatmadan kodlama kısmına geçelim.
Senaryomuz şu şekilde;
Elimiz de XML formatında bir URL var ve biz bu URL den bize lazım olan resim linklerini alacağız.

public class XPathParser {
    private static String url = "http://www.gold.com.tr/cok-satanlar-rss/54109/0";
    private static ArrayList<String> arr = new ArrayList<>();
    public static void main(String[] args) throws ParserConfigurationException, MalformedURLException, IOException, SAXException, XPathExpressionException {
        URL geoLocationDetailXMLURL = new URL(url);
        URLConnection geoLocationDetailXMLURLConnection = geoLocationDetailXMLURL.openConnection();
        BufferedReader geoLeocationDetails = new BufferedReader(new InputStreamReader(geoLocationDetailXMLURLConnection.getInputStream(), "UTF-8"));
        InputSource inputSource = new InputSource(geoLeocationDetails);
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder =  builderFactory.newDocumentBuilder();
        org.w3c.dom.Document xmlDocument = builder.parse(inputSource);
        XPath xPath =  XPathFactory.newInstance().newXPath();
        String expression = "rss/channel/item/image/url";   
    NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);      
        for (int i = 0; i < nodeList.getLength(); i++) {
            arr.add(nodeList.item(i).getFirstChild().getNodeValue().toString());
        }
       
        for (int i = 0; i < arr.size(); i++) {
            System.out.println(arr.get(i));
        }
    }
}
Çıktı aşağıda ki gibi olacaktır.

http://cdn.gold.com.tr/UrunResim/BuyukResim/22500118260518.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/23289917929781.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/23681317937327.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/23681117934373.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/24087418137445.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/24252218265797.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/21674611123910.jpg
http://cdn.gold.com.tr/UrunResim/BuyukResim/23680917931225.jpg

Hiç yorum yok:

Yorum Gönder