user2428997
user2428997

Reputation: 9

java dom search xml

hello i have this xml

<?xml version="1.0" encoding="utf-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="new2.xsl"?>
<patients>
    <patient>
    <stoixeia_astheni>
        <arithmos_eksetasis>1</arithmos_eksetasis>
        <imerominia_eksetasis>11/12/2005</imerominia_eksetasis>
        <amka>14385</amka>

    </stoixeia_astheni>
    <stoixeia_epikoinonias>
        <dieuthinsi>Μητσοπούλου 20</dieuthinsi>

    </stoixeia_epikoinonias>
    <loipa_stoixeia>
        <fylo>Aρρεν</fylo>

    </loipa_stoixeia>
    </patient>
    <patient>
    same code here
    </patient>

</patients>

and i want to search this by amka value. i have tried this:

 Document doc = docBuilder.parse(filepath);
            NodeList root= doc.getDocumentElement().getChildNodes();
            for(int i=0; i<root.getLength(); i++){
                if(root.item(i).getChildNodes().item(0).getChildNodes().item(2).getNodeValue()=="14385"){
                    pw.println("Gataki<br>");
                }
            }

but runtime error occurs

Any help would be useful.

Upvotes: 1

Views: 1436

Answers (1)

fGo
fGo

Reputation: 1146

Use this xpath

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(<uri_as_string>);
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("/patients/patient/stoixeia_astheni/amka/text()");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

Just in case takke a look at this xpath syntaxis

/   Selects from the root node
//  Selects nodes in the document from the current node that match the selection no matter where they are
.   Selects the current node
..  Selects the parent of the current node
@   Selects attributes

Upvotes: 2

Related Questions