Получить значение родительского атрибута на основе XML поиск с использованием xpath java - PullRequest
2 голосов
/ 09 июля 2020

Я хочу получить номер ЗАПИСИ на основе идентификатора контракта, переданного методу java. может ли кто-нибудь помочь в этом, поскольку я новичок в разборе XML?

образец xml файл:

<?xml version="1.0"?><FILE>
<Document RECORD="1"><Contract-Id>234</Contract-Id><Client-Id>232</Client-Id></Document>
<Document RECORD="2"><Contract-Id>235</Contract-Id><Client-Id>334</Client-Id></Document>
</FILE?

Java код:

              File fXmlFile = new File(inputFile);
               DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
               DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
               Document xmlDocument = dBuilder.parse(fXmlFile);
               xmlDocument.getDocumentElement().normalize();
   
    
        XPath xPath = XPathFactory.newInstance().newXPath();
        XPathExpression xPathExpr = xPath.compile("//Document/Contract-Id[text()='"+ContractNumber+"']");
        //Object result = xPathExpr.evaluate(xmlDocument,XPathConstants.NODESET);
        
        Node nl = (Node)xPathExpr.evaluate(xmlDocument.getParentNode(), XPathConstants.NODESET);
        nl.getTextContent();
        nl.getAttributes();

    

1 Ответ

1 голос
/ 10 июля 2020

Попробуйте следующее выражение XPath:

/FILE/Document[Contract-Id="235"]/@RECORD

...