Java তে XPath একটি অত্যন্ত শক্তিশালী ভাষা যা XML ডকুমেন্টে নির্দিষ্ট উপাদান বা মান অনুসন্ধান করতে ব্যবহৃত হয়। XPath ব্যবহার করে আপনি XML ডকুমেন্টের মধ্যে উপাদান বা অ্যাট্রিবিউটের মান বের করতে পারেন।
XPath কী?
XPath (XML Path Language) হল একটি ভাষা যা XML ডকুমেন্টের উপাদান বা অ্যাট্রিবিউট খুঁজে বের করতে ব্যবহৃত হয়। এটি XML ডকুমেন্টের গঠন অনুসারে উপাদান বা ডেটা নির্বাচন করতে বিভিন্ন পাথ বা এক্সপ্রেশন ব্যবহার করে।
Java তে XPath ব্যবহার:
Java তে XPath ব্যবহার করার জন্য আপনাকে javax.xml.xpath প্যাকেজের ক্লাসগুলি ব্যবহার করতে হবে, বিশেষ করে XPath এবং XPathExpression ক্লাসগুলি।
উদাহরণ:
ধরা যাক আমাদের একটি XML ডকুমেন্ট আছে এবং আমরা XPath ব্যবহার করে এর মধ্যে কিছু নির্দিষ্ট তথ্য বের করতে চাই।
1. 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>
2. Java কোড - XPath ব্যবহার
এখন, আমরা 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();
}
}
}
ব্যাখ্যা:
- XML ডকুমেন্ট লোড করা: XML ডেটা একটি স্ট্রিং আকারে সোজা কোডে দেওয়া হয়েছে এবং তারপরে
InputSourceদিয়ে তা লোড করা হয়েছে। - XPathFactory এবং XPath তৈরি করা: XPath ব্যবহার করার জন্য
XPathFactoryএবংXPathঅবজেক্ট তৈরি করা হয়েছে। - XPath এক্সপ্রেশন: XPath এক্সপ্রেশন ব্যবহার করা হয়েছে যাতে XML ডকুমেন্ট থেকে "Software Developer" পদের কর্মচারীর নাম এবং বেতন বের করা যায়।
- প্রথম এক্সপ্রেশন:
/employees/employee[position='Software Developer']/name→ এটি "Software Developer" পদের কর্মচারীর নাম বের করবে। - দ্বিতীয় এক্সপ্রেশন:
/employees/employee[position='Software Developer']/salary→ এটি "Software Developer" পদের কর্মচারীর বেতন বের করবে।
- প্রথম এক্সপ্রেশন:
- XPath এক্সপ্রেশন কার্যকর করা:
xpath.compile()মেথড দিয়ে XPath এক্সপ্রেশন কম্পাইল করা এবংevaluate()মেথড দিয়ে XML ডকুমেন্টে তা প্রয়োগ করা হয়। - ফলাফল প্রদর্শন: XPath এক্সপ্রেশন থেকে প্রাপ্ত ফলাফল আউটপুটে প্রদর্শিত হয়।
আউটপুট:
Name of Software Developer: John Doe
Salary of Software Developer: 50000
XPath এর কিছু সাধারণ এক্সপ্রেশন:
/employees/employee/name: সমস্ত কর্মচারীর নাম বের করবে।//employee[position='Project Manager']/name: "Project Manager" পদের কর্মচারীর নাম বের করবে।/employees/employee[salary>50000]/name: যাদের বেতন ৫০,০০০ এর বেশি, তাদের নাম বের করবে।
XPath ব্যবহার করে আপনি XML ডকুমেন্টে নির্দিষ্ট ডেটা বের করতে পারবেন এবং Java তে এটি খুবই সহজ এবং কার্যকরী। XPath বিভিন্ন জটিল অনুসন্ধান করতে সক্ষম এবং এটি XML ডকুমেন্টে ডেটা বের করার জন্য একটি শক্তিশালী টুল।
Read more