# javax.xml.xpath

***

**1. Extracting Data from an XML File**

```java
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new File("sample.xml"));
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        NodeList nodes = (NodeList) xpath.evaluate("/root/item", doc, XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeValue());
        }
    }
}
```

**2. Searching for Specific Nodes**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item[@id='1']");
        Object result = expr.evaluate("sample.xml", XPathConstants.NODE);
        if (result instanceof Node) {
            System.out.println(((Node) result).getNodeValue());
        }
    }
}
```

**3. Selecting Nodes Based on Attribute Values**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("//item[@name='Product A']");
        NodeList nodes = (NodeList) expr.evaluate("sample.xml", XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeValue());
        }
    }
}
```

**4. Using Predicates in XPath Expressions**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item[price>10]");
        NodeList nodes = (NodeList) expr.evaluate("sample.xml", XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeValue());
        }
    }
}
```

**5. Combining Predicates in XPath Expressions**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item[price>10 and name='Product A']");
        NodeList nodes = (NodeList) expr.evaluate("sample.xml", XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeValue());
        }
    }
}
```

**6. Extracting Multiple Attributes from a Node**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item/@*");
        NodeList nodes = (NodeList) expr.evaluate("sample.xml", XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeName() + ": " + node.getNodeValue());
        }
    }
}
```

**7. Extracting Text Content from a Node**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item/text()");
        String text = (String) expr.evaluate("sample.xml", XPathConstants.STRING);
        System.out.println(text);
    }
}
```

**8. Using Functions in XPath Expressions**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item[contains(name, 'Product')]");
        NodeList nodes = (NodeList) expr.evaluate("sample.xml", XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeValue());
        }
    }
}
```

**9. Using XPath in JAXP**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new File("sample.xml"));

        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");
        NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            System.out.println(node.getNodeValue());
        }
    }
}
```

**10. Using XPath to Transform XML**

```java
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(new StreamSource(new StringReader(expr.evaluate())));
        transformer.transform(new StreamSource(new File("sample.xml")), new StreamResult(new File("output.xml")));
    }
}
```

**11. Using XPath to Validate XML**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new File("sample.xml"));

        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
        Schema schema = schemaFactory.newSchema(new StreamSource(new File("schema.xsd")));
        Validator validator = schema.newValidator();
        validator.validate(new SAXSource(new InputSource("sample.xml")));
    }
}
```

**12. Using XPath to Create XML**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(
                new Templates(new TemplatesHandler.Factory() {
                    public StreamSource get(Object resource) {
                        return new StreamSource(new StringReader(expr.evaluate()));
                    }
                }));
        transformer.transform(new StreamSource(new File("sample.xml")), new StreamResult(new File("output.xml")));
    }
}
```

**13. Using XPath to Update XML**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(
                new Templates(new TemplatesHandler.Factory() {
                    public StreamSource get(Object resource) {
                        return new StreamSource(new StringReader("<em>" + expr.evaluate() + "</em>"));
                    }
                }));
        transformer.transform(new StreamSource(new File("sample.xml")), new StreamResult(new File("output.xml")));
    }
}
```

**14. Using XPath to Delete XML**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(
                new Templates(new TemplatesHandler.Factory() {
                    public StreamSource get(Object resource) {
                        return new StreamSource(new StringReader(""));
                    }
                }));
        transformer.transform(new StreamSource(new File("sample.xml")), new StreamResult(new File("output.xml")));
    }
}
```

**15. Using XPath to Copy XML**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(
                new Templates(new TemplatesHandler.Factory() {
                    public StreamSource get(Object resource) {
                        return new StreamSource(new StringReader(expr.evaluate()));
                    }
                }));
        transformer.transform(new StreamSource(new File("sample.xml")), new StreamResult(new File("output.xml")));
    }
}
```

**16. Using XPath to Sort XML**

```java
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

public class XpathDemo {
    public static void main(String[] args) throws Exception {
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPath xpath = xpathFactory.newXPath();
        XPathExpression expr = xpath.compile("/root/item");

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer(
                new Templates(new TemplatesHandler.Factory() {
                    public StreamSource get(Object resource) {
                        return new StreamSource(new StringReader("<em>" + expr.evaluate().split(" ")[0] + "</em>"));
                    }
                }));
        transformer.transform(new StreamSource(new File("sample.xml")), new StreamResult(new File("output.xml")));
    }
}

```
