XPath (XML Path Language) হলো একটি ভাষা যা XML ডকুমেন্টের মধ্যে উপাদান এবং ডেটা অনুসন্ধান করতে ব্যবহৃত হয়। এটি XML ডকুমেন্টের মধ্যে নির্দিষ্ট উপাদান, অ্যাট্রিবিউট বা মান বের করতে সাহায্য করে এবং এটি XML ডেটাকে কার্যকরভাবে ম্যানিপুলেট বা এক্সেস করতে ব্যবহৃত হয়।
/bookstore/book/title
: এটি bookstore
এলিমেন্টের মধ্যে থাকা book
এলিমেন্টের title
সাব-এলিমেন্ট নির্বাচন করবে।contains(title, 'Java')
— এটি পরীক্ষা করবে যে title
অ্যাট্রিবিউট বা এলিমেন্টে 'Java' শব্দটি আছে কিনা।and
, or
এবং not
সমর্থন করে, যা বিভিন্ন শর্ত নির্ধারণের জন্য ব্যবহৃত হয়।/bookstore/book[price>35 and price<100]
— এটি সমস্ত book
এলিমেন্ট নির্বাচন করবে, যেখানে price
35 এর চেয়ে বেশি এবং 100 এর চেয়ে কম।*
(যে কোনো উপাদান), @
(অ্যাট্রিবিউট), []
(ইন্ডেক্স বা শর্ত) ব্যবহার করতে পারে।/bookstore/*
— এটি bookstore
এলিমেন্টের সমস্ত সরাসরি চাইল্ড এলিমেন্ট নির্বাচন করবে।/bookstore/book[@category='fiction']
— এটি bookstore
এলিমেন্টের মধ্যে category
অ্যাট্রিবিউট যেটির মান fiction
, এমন সমস্ত book
এলিমেন্ট নির্বাচন করবে।/bookstore/book/title
।book/title
।ধরা যাক আমাদের একটি XML ডকুমেন্ট রয়েছে যা একটি বইয়ের তথ্য রাখে:
<bookstore>
<book>
<title lang="en">Learning Java</title>
<author>John Doe</author>
<price>50.00</price>
</book>
<book>
<title lang="es">Aprendiendo Java</title>
<author>Jane Doe</author>
<price>45.00</price>
</book>
</bookstore>
XPath Query Examples:
/bookstore/book/title
— এটি সমস্ত book
এলিমেন্টের title
সাব-এলিমেন্ট নির্বাচন করবে।/bookstore/book[price>45]
— এটি সমস্ত book
এলিমেন্ট নির্বাচন করবে যার price
45 এর বেশি।/bookstore/book/title[@lang='en']
— এটি title
এলিমেন্ট নির্বাচন করবে যেগুলির lang
অ্যাট্রিবিউট en
।Java তে XML ডকুমেন্টের XPath কুইরি করার জন্য javax.xml.xpath
প্যাকেজ ব্যবহার করা হয়। এখানে একটি সাধারণ উদাহরণ দেওয়া হলো:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
public class XPathExample {
public static void main(String[] args) throws Exception {
// XML ডকুমেন্ট লোড করুন
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("books.xml");
// XPath অবজেক্ট তৈরি করুন
XPath xpath = XPathFactory.newInstance().newXPath();
// XPath কুইরি রান করুন
String expression = "/bookstore/book/title";
NodeList nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
// ফলাফল প্রদর্শন করুন
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.println(nodeList.item(i).getTextContent());
}
}
}
এতে books.xml
ফাইলের title
এলিমেন্টের সকল মান প্রিন্ট হবে।
XPath XML ডকুমেন্টের মধ্যে ডেটা অনুসন্ধান এবং এক্সেস করার জন্য একটি শক্তিশালী টুল। এটি XML ডকুমেন্টের বিভিন্ন উপাদান বা অ্যাট্রিবিউটের মধ্যে নির্দিষ্ট ডেটা খুঁজে বের করতে এবং তাদের কার্যকরভাবে ম্যানিপুলেট করতে সাহায্য করে। Java তে XPath ব্যবহার করা সহজ এবং এটি XML ডকুমেন্টের সাথে কাজ করার জন্য একটি অপরিহার্য টুল।
XPath (XML Path Language) হল একটি ভাষা যা XML ডকুমেন্টের ভিতরে থাকা উপাদান, অ্যাট্রিবিউট, বা ডেটা অনুসন্ধান এবং নির্বাচন করার জন্য ব্যবহৃত হয়। XPath XML ডকুমেন্টের মধ্যে বিভিন্ন উপাদান বা ডেটাকে নির্দিষ্ট করার জন্য একটি পথ বা এক্সপ্রেশন প্রদান করে। এটি মূলত XML ডকুমেন্টের মধ্যে বিভিন্ন উপাদান বা তথ্য অনুসন্ধানের জন্য একটি কুয়েরি ভাষা হিসেবে কাজ করে।
XPath-এর প্রয়োজনীয়তা অনেক কারণে গুরুত্বপূর্ণ:
ধরা যাক, আমাদের একটি XML ডকুমেন্ট রয়েছে:
<bookstore>
<book>
<title>Java Programming</title>
<author>John Doe</author>
<price>29.99</price>
</book>
<book>
<title>Python Programming</title>
<author>Jane Doe</author>
<price>19.99</price>
</book>
</bookstore>
এখন, যদি আপনি book
উপাদানটির title
খুঁজে পেতে চান, তাহলে XPath এক্সপ্রেশন হবে:
/bookstore/book/title
এটি bookstore
এর মধ্যে প্রথম book
উপাদানটির title
নির্বাচন করবে। আর যদি দ্বিতীয় book
এর title
পেতে চান, তবে XPath হবে:
/bookstore/book[2]/title
এভাবে XPath বিভিন্ন XML ডকুমেন্টের মধ্যে সহজে তথ্য বের করতে সাহায্য করে।
and
, or
অপারেটর)।সার্বিকভাবে, XPath একটি শক্তিশালী টুল যা XML ডেটার মধ্যে নির্দিষ্ট তথ্য অনুসন্ধান করতে এবং এক্সপ্রেশন ব্যবহার করে সেগুলি নির্বাচন করতে সাহায্য করে, যা XML প্রসেসিং এবং ডেটা ম্যানিপুলেশনকে আরও সহজ ও দ্রুত করে তোলে।
XPath (XML Path Language) একটি ভাষা যা XML ডকুমেন্টের মধ্যে নির্দিষ্ট উপাদান বা ডেটা এক্সট্র্যাক্ট করতে ব্যবহৃত হয়। XPath ব্যবহার করে আপনি XML ডকুমেন্টের নোডগুলোতে সহজেই অ্যাক্সেস পেতে পারেন এবং নির্দিষ্ট ডেটা নির্বাচন করতে পারেন।
ধরা যাক, আমাদের একটি XML ডকুমেন্ট রয়েছে:
<employees>
<employee>
<id>101</id>
<name>John Doe</name>
<role>Software Developer</role>
</employee>
<employee>
<id>102</id>
<name>Jane Smith</name>
<role>Project Manager</role>
</employee>
</employees>
সব employee
এলিমেন্ট নির্বাচন করা:
/employees/employee
এই এক্সপ্রেশনটি employees
নোডের মধ্যে সমস্ত employee
নোড নির্বাচন করবে।
প্রথম employee
এর name
নির্বাচন করা:
/employees/employee[1]/name
এটি প্রথম employee
এর name
এলিমেন্ট নির্বাচন করবে, এবং ফলস্বরূপ "John Doe" দিবে।
সব employee
এর নাম নির্বাচন করা:
/employees/employee/name
এই এক্সপ্রেশনটি সমস্ত employee
নোডের name
এলিমেন্টগুলো নির্বাচন করবে, এবং ফলস্বরূপ John Doe
এবং Jane Smith
রিটার্ন করবে।
id
এর মান 101 এর জন্য employee
নির্বাচন করা:
/employees/employee[id='101']
এই এক্সপ্রেশনটি সেই employee
নোড নির্বাচন করবে যার id
101।
Java তে XPath ব্যবহার করার জন্য সাধারণত JAXP লাইব্রেরি ব্যবহার করা হয়। এখানে একটি উদাহরণ দেওয়া হলো:
import javax.xml.parsers.*;
import org.w3c.dom.*;
import javax.xml.xpath.*;
public class XPathExample {
public static void main(String[] args) throws Exception {
// XML ডকুমেন্ট লোড করা
String xml = "<employees><employee><id>101</id><name>John Doe</name><role>Software Developer</role></employee>" +
"<employee><id>102</id><name>Jane Smith</name><role>Project Manager</role></employee></employees>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource inputSource = new InputSource(new java.io.StringReader(xml));
Document document = builder.parse(inputSource);
// XPathFactory এবং XPath অবজেক্ট তৈরি করা
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xpath = xPathFactory.newXPath();
// XPath এক্সপ্রেশন প্রয়োগ করা
XPathExpression expr = xpath.compile("/employees/employee/name");
NodeList nodeList = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
// ফলস্বরূপ প্রিন্ট করা
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.println("Employee Name: " + nodeList.item(i).getTextContent());
}
}
}
Employee Name: John Doe
Employee Name: Jane Smith
এইভাবে Java তে XPath ব্যবহার করে XML ডেটা এক্সট্র্যাকশন করতে পারেন, যা XML ডকুমেন্টের তথ্য পেতে এবং প্রক্রিয়াকরণ করতে অত্যন্ত কার্যকর।
Java XML এর মধ্যে XPath Expressions এবং Functions অত্যন্ত গুরুত্বপূর্ণ টুলস যা XML ডকুমেন্ট থেকে ডেটা এক্সট্রাক্ট করতে সাহায্য করে। XPath একটি ভাষা যা XML ডকুমেন্টের বিভিন্ন উপাদান বা অ্যাট্রিবিউটের মান বের করতে ব্যবহৃত হয়। নিচে XPath Expressions এবং Functions সম্পর্কে বিস্তারিত আলোচনা করা হলো:
XPath Expression একটি কুয়েরি ভাষা যা XML ডকুমেন্টের মধ্যে নির্দিষ্ট উপাদান বা ডেটা বের করতে ব্যবহৃত হয়। এটি XML ডকুমেন্টের মধ্যে নেভিগেট করার জন্য পাথ সিলেকশন ব্যবহার করে। XPath Expression সাধারণত নিম্নলিখিত উপাদানগুলি ব্যবহার করে:
/
সিম্বল ব্যবহার করা হয়।/bookstore/book
— এটি <bookstore>
এলিমেন্টের মধ্যে সমস্ত <book>
এলিমেন্ট নির্বাচন করবে।/
দ্বারা চাইল্ড নোড সিলেক্ট করা হয়।/bookstore/book/title
— এটি <bookstore>
এলিমেন্টের মধ্যে <book>
এলিমেন্টের <title>
চাইল্ড নোড নির্বাচন করবে।@
দ্বারা অ্যাট্রিবিউট নির্বাচন করা হয়।/bookstore/book/@category
— এটি <book>
এলিমেন্টের category
অ্যাট্রিবিউট নির্বাচন করবে।[]
ব্যবহার করে নির্দিষ্ট শর্ত পূরণ করা নোড নির্বাচন করা হয়।/bookstore/book[price>35]
— এটি এমন <book>
এলিমেন্ট নির্বাচন করবে যার <price>
35 এর বেশি।*
দ্বারা সব নোড নির্বাচন করা যায়।/bookstore/*
— এটি <bookstore>
এলিমেন্টের সব চাইল্ড নোড নির্বাচন করবে।/
(Slash): রুট বা চাইল্ড নোড নির্বাচন।//
(Double Slash): পুরো ডকুমেন্টে কোথাও নোড নির্বাচন।@
: অ্যাট্রিবিউট সিলেকশন।[]
(Predicate): শর্ত অনুযায়ী নির্বাচন।*
(Asterisk): কোনো নির্দিষ্ট নোড বা এলিমেন্টের পছন্দ নেই, সব নির্বাচন।/bookstore/book
: সমস্ত <book>
এলিমেন্টকে নির্বাচন করবে <bookstore>
এর মধ্যে।/bookstore/book[price>30]
: সব <book>
এলিমেন্ট যেখানে <price>
30 এর বেশি।//book
: ডকুমেন্টের যেকোন জায়গা থেকে <book>
এলিমেন্ট নির্বাচন করবে।XPath ফাংশনগুলি XPath এক্সপ্রেশনকে আরও শক্তিশালী ও নমনীয় করে তোলে। XPath ফাংশনগুলি ডেটা প্রক্রিয়াকরণে সহায়ক হয়, যেমন স্ট্রিং, সংখ্যা, তারিখ এবং নোড ডেটার সাথে কাজ করা। XPath ফাংশনগুলি সাধারণত নিচে উল্লেখিত ক্যাটেগরিতে বিভক্ত:
string()
: কোনো নোডের টেক্সট মান বের করার জন্য ব্যবহৃত হয়।string(/bookstore/book/title)
— এটি <title>
এলিমেন্টের টেক্সট মান বের করবে।contains()
: একটি স্ট্রিংকে অন্য স্ট্রিংয়ের মধ্যে অনুসন্ধান করে।contains(/bookstore/book/title, 'Java')
— এটি এমন সমস্ত <title>
এলিমেন্ট নির্বাচন করবে যেখানে "Java" শব্দটি রয়েছে।starts-with()
: একটি স্ট্রিং যদি অন্য স্ট্রিং দিয়ে শুরু হয় তা পরীক্ষা করে।starts-with(/bookstore/book/title, 'Learn')
— এটি এমন সমস্ত <title>
এলিমেন্ট নির্বাচন করবে যা "Learn" দিয়ে শুরু হয়।substring()
: স্ট্রিংয়ের একটি অংশ বের করে।substring(/bookstore/book/title, 1, 4)
— এটি <title>
এলিমেন্টের প্রথম 4 ক্যারেক্টার বের করবে।sum()
: একাধিক নম্বরের যোগফল বের করতে ব্যবহৃত হয়।sum(/bookstore/book/price)
— এটি সমস্ত <price>
এলিমেন্টের যোগফল বের করবে।floor()
: কোনো সংখ্যা থেকে তার নিকটবর্তী নিম্নতর পূর্ণসংখ্যা বের করতে ব্যবহৃত হয়।floor(34.87)
— এটি 34 রিটার্ন করবে।ceiling()
: কোনো সংখ্যা থেকে তার নিকটবর্তী উচ্চতর পূর্ণসংখ্যা বের করতে ব্যবহৃত হয়।ceiling(34.12)
— এটি 35 রিটার্ন করবে।boolean()
: একটি এক্সপ্রেশন যদি সত্য (true) হয়, তাহলে এটি true
রিটার্ন করে, অন্যথায় false
।boolean(/bookstore/book/price > 20)
— এটি true
রিটার্ন করবে যদি <price>
20 এর বেশি হয়।not()
: একটি শর্তের বিপরীত ফলাফল রিটার্ন করে।not(/bookstore/book/price < 10)
— এটি true
রিটার্ন করবে যদি <price>
10 এর কম না হয়।count()
: নির্বাচিত নোডগুলির সংখ্যা গননা করে।count(/bookstore/book)
— এটি <bookstore>
এর মধ্যে মোট <book>
এলিমেন্টের সংখ্যা রিটার্ন করবে।position()
: নির্বাচিত নোডের অবস্থান ফিরিয়ে দেয়।/bookstore/book[position() = 1]
— এটি <bookstore>
এর প্রথম <book>
এলিমেন্ট নির্বাচন করবে।Java তে XPath Expression এবং Functions ব্যবহৃত হয় XML ডকুমেন্ট থেকে নির্দিষ্ট ডেটা বের করার জন্য। XPath expressions ব্যবহার করে সহজেই XML ডকুমেন্টের মধ্যে নেভিগেট করা যায় এবং XPath functions ব্যবহার করে ডেটা প্রক্রিয়াকরণ আরও দক্ষ এবং নমনীয় করা যায়।
Java তে XPath একটি অত্যন্ত শক্তিশালী ভাষা যা XML ডকুমেন্টে নির্দিষ্ট উপাদান বা মান অনুসন্ধান করতে ব্যবহৃত হয়। XPath ব্যবহার করে আপনি XML ডকুমেন্টের মধ্যে উপাদান বা অ্যাট্রিবিউটের মান বের করতে পারেন।
XPath (XML Path Language) হল একটি ভাষা যা XML ডকুমেন্টের উপাদান বা অ্যাট্রিবিউট খুঁজে বের করতে ব্যবহৃত হয়। এটি XML ডকুমেন্টের গঠন অনুসারে উপাদান বা ডেটা নির্বাচন করতে বিভিন্ন পাথ বা এক্সপ্রেশন ব্যবহার করে।
Java তে XPath ব্যবহার করার জন্য আপনাকে javax.xml.xpath
প্যাকেজের ক্লাসগুলি ব্যবহার করতে হবে, বিশেষ করে XPath
এবং XPathExpression
ক্লাসগুলি।
ধরা যাক আমাদের একটি XML ডকুমেন্ট আছে এবং আমরা XPath ব্যবহার করে এর মধ্যে কিছু নির্দিষ্ট তথ্য বের করতে চাই।
employees.xml
(XML ডকুমেন্ট)<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<name>John Doe</name>
<position>Software Developer</position>
<salary>50000</salary>
</employee>
<employee>
<name>Jane Smith</name>
<position>Project Manager</position>
<salary>75000</salary>
</employee>
<employee>
<name>Michael Brown</name>
<position>QA Engineer</position>
<salary>45000</salary>
</employee>
</employees>
এখন, আমরা XPath ব্যবহার করে এই XML ডকুমেন্ট থেকে কিছু নির্দিষ্ট তথ্য বের করতে পারি। উদাহরণস্বরূপ, Software Developer
পদের কর্মচারীর নাম বের করা এবং তাদের বেতন বের করা।
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathConstants;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import java.io.StringReader;
public class XPathExample {
public static void main(String[] args) {
try {
// XML ডকুমেন্ট লোড করা
String xmlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<employees>\n" +
" <employee>\n" +
" <name>John Doe</name>\n" +
" <position>Software Developer</position>\n" +
" <salary>50000</salary>\n" +
" </employee>\n" +
" <employee>\n" +
" <name>Jane Smith</name>\n" +
" <position>Project Manager</position>\n" +
" <salary>75000</salary>\n" +
" </employee>\n" +
" <employee>\n" +
" <name>Michael Brown</name>\n" +
" <position>QA Engineer</position>\n" +
" <salary>45000</salary>\n" +
" </employee>\n" +
"</employees>";
// DocumentBuilderFactory তৈরি করা
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource inputSource = new InputSource(new StringReader(xmlContent));
Document document = builder.parse(inputSource);
// XPathFactory তৈরি করা
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
// XPath এক্সপ্রেশন
String expression = "/employees/employee[position='Software Developer']/name";
// XPath এক্সপ্রেশন এক্সিকিউট করা
XPathExpression expr = xpath.compile(expression);
NodeList nodeList = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
// ফলাফল দেখানো
if (nodeList.getLength() > 0) {
System.out.println("Name of Software Developer: " + nodeList.item(0).getTextContent());
}
// বেতন বের করা (Salary of the Software Developer)
String salaryExpression = "/employees/employee[position='Software Developer']/salary";
XPathExpression salaryExpr = xpath.compile(salaryExpression);
String salary = (String) salaryExpr.evaluate(document, XPathConstants.STRING);
System.out.println("Salary of Software Developer: " + salary);
} catch (Exception e) {
e.printStackTrace();
}
}
}
InputSource
দিয়ে তা লোড করা হয়েছে।XPathFactory
এবং XPath
অবজেক্ট তৈরি করা হয়েছে।/employees/employee[position='Software Developer']/name
→ এটি "Software Developer" পদের কর্মচারীর নাম বের করবে।/employees/employee[position='Software Developer']/salary
→ এটি "Software Developer" পদের কর্মচারীর বেতন বের করবে।xpath.compile()
মেথড দিয়ে XPath এক্সপ্রেশন কম্পাইল করা এবং evaluate()
মেথড দিয়ে XML ডকুমেন্টে তা প্রয়োগ করা হয়।Name of Software Developer: John Doe
Salary of Software Developer: 50000
/employees/employee/name
: সমস্ত কর্মচারীর নাম বের করবে।//employee[position='Project Manager']/name
: "Project Manager" পদের কর্মচারীর নাম বের করবে।/employees/employee[salary>50000]/name
: যাদের বেতন ৫০,০০০ এর বেশি, তাদের নাম বের করবে।XPath ব্যবহার করে আপনি XML ডকুমেন্টে নির্দিষ্ট ডেটা বের করতে পারবেন এবং Java তে এটি খুবই সহজ এবং কার্যকরী। XPath বিভিন্ন জটিল অনুসন্ধান করতে সক্ষম এবং এটি XML ডকুমেন্টে ডেটা বের করার জন্য একটি শক্তিশালী টুল।
Read more