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