List of usage examples for javax.xml.xpath XPath setNamespaceContext
public void setNamespaceContext(NamespaceContext nsContext);
From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java
@Test public void testCreateLargeRecordSet() throws Exception { XPath xp = XPathFactory.newInstance().newXPath(); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); XmlConverter converter = new XmlConverter(); converter.getDocumentBuilderFactory().setNamespaceAware(true); Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream); Element entityContainerElement = (Element) xp.evaluate( "/merge:EntityMergeRequestMessage/merge:MergeParameters/er-ext:EntityContainer", testRequestMessage, XPathConstants.NODE); assertNotNull(entityContainerElement); Element entityElement = (Element) xp.evaluate("er-ext:Entity[1]", entityContainerElement, XPathConstants.NODE); assertNotNull(entityElement);// www. ja va 2 s. com int entityCount = ((NodeList) xp.evaluate("er-ext:Entity", entityContainerElement, XPathConstants.NODESET)) .getLength(); int expectedInitialEntityCount = 6; assertEquals(expectedInitialEntityCount, entityCount); int recordIncrement = 500; for (int i = 0; i < recordIncrement; i++) { Element newEntityElement = (Element) entityElement.cloneNode(true); entityContainerElement.appendChild(newEntityElement); } entityCount = ((NodeList) xp.evaluate("er-ext:Entity", entityContainerElement, XPathConstants.NODESET)) .getLength(); assertEquals(expectedInitialEntityCount + recordIncrement, entityCount); Node entityContainerNode = testRequestMessage .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer") .item(0); assertNotNull(entityContainerNode); NodeList entityNodeList = ((Element) entityContainerNode) .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "Entity"); List<RecordWrapper> records = entityResolutionMessageHandler.createRecordsFromRequestMessage(entityNodeList, null); assertEquals(expectedInitialEntityCount + recordIncrement, records.size()); }
From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java
@Test public void testPerformEntityResolutionWithDetermFactors() throws Exception { XmlConverter converter = new XmlConverter(); converter.getDocumentBuilderFactory().setNamespaceAware(true); InputStream attributeParametersStream = getClass() .getResourceAsStream("/xml/TestAttributeParametersWithDeterm.xml"); entityResolutionMessageHandler.setAttributeParametersStream(attributeParametersStream); testRequestMessageInputStream = getClass() .getResourceAsStream("/xml/EntityMergeRequestMessageForDeterm.xml"); Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream); Node entityContainerNode = testRequestMessage .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer") .item(0);/* w w w . j a va2 s . c om*/ assertNotNull(entityContainerNode); Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null, null); resultDocument.normalizeDocument(); // LOG.info(converter.toString(resultDocument)); XPath xp = XPathFactory.newInstance().newXPath(); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); assertEquals(2, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(2, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:OriginalRecordReference", resultDocument, XPathConstants.NODESET); assertEquals(2, entityNodes.getLength()); for (int i = 0; i < entityNodes.getLength(); i++) { Element e = (Element) entityNodes.item(i); String entityIdRef = e.getAttributeNS(EntityResolutionNamespaceContext.STRUCTURES_NAMESPACE, "ref"); assertNotNull(entityIdRef); assertNotNull(xp.evaluate("//merge-result-ext:Entity[@s:id='" + entityIdRef + "']", resultDocument, XPathConstants.NODE)); } }
From source file:gov.nih.nci.cacis.common.util.ExtractSchematron.java
/** * Creates new instance of the schematron extractor. * /* ww w . ja v a 2s .c om*/ * @throws ClassCastException if there is an error getting a SchemaLoader * @throws ClassNotFoundException if there is an error getting a SchemaLoader * @throws InstantiationException if there is an error getting a SchemaLoader * @throws IllegalAccessException if there is an error getting a SchemaLoader * @throws TransformerFactoryConfigurationError if there is an error getting a serializer * @throws TransformerConfigurationException if there is an error getting a serializer * @throws XPathExpressionException if there is an error compiling expressions */ public ExtractSchematron() throws ClassCastException, ClassNotFoundException, InstantiationException, IllegalAccessException, TransformerConfigurationException, TransformerFactoryConfigurationError, XPathExpressionException { final DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance(); final XSImplementation impl = (XSImplementation) registry.getDOMImplementation("XS-Loader"); this.dfactory = DocumentBuilderFactory.newInstance(); this.dfactory.setNamespaceAware(true); final XPathFactory factory = XPathFactory.newInstance(); final XPath xpath = factory.newXPath(); xpath.setNamespaceContext(new SchNamespaceContext()); this.serializer = TransformerFactory.newInstance().newTransformer(); this.serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); this.patternExpr = xpath.compile("//sch:pattern"); this.schemaLoader = impl.createXSLoader(null); }
From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java
/** * This unit test will read a entity merge request document that has given and sur names in mixed case. * It will then set an ER threshold of 3 and pass in six entities so ER is skipped. * However, the results should still be sorted and passed back in order. * /*from w w w .j a v a 2s. c o m*/ * @throws Exception */ @Test public void testRecordLimitSorting() throws Exception { XmlConverter converter = new XmlConverter(); converter.getDocumentBuilderFactory().setNamespaceAware(true); Document testRequestMessage = converter .toDOMDocument(getClass().getResourceAsStream("/xml/EntityMergeRequestMessageMixedCase.xml")); Node entityContainerNode = testRequestMessage .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer") .item(0); assertNotNull(entityContainerNode); Node entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode("2"); Document attributeParametersDocument = entityResolutionMessageHandler.getAttributeParametersDocument(); Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, attributeParametersDocument.getDocumentElement(), entityResolutionConfigurationNode); XPath xp = XPathFactory.newInstance().newXPath(); xp.setNamespaceContext(testNamespaceContext); NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); int inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(6, entityNodes.getLength()); String recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("true", recordLimitExceeded); assertEquals("DUCK", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[1]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", resultDocument)); assertEquals("Donald", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[1]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", resultDocument)); assertEquals("MOUSE", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[2]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", resultDocument)); assertEquals("FRANK", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[2]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", resultDocument)); assertEquals("mouse", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[3]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", resultDocument)); assertEquals("macky", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[3]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", resultDocument)); assertEquals("MouSe", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[4]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", resultDocument)); assertEquals("Mickey", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[4]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", resultDocument)); assertEquals("MOUSE", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[5]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", resultDocument)); assertEquals("Minn", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[5]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", resultDocument)); assertEquals("Mouse", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[6]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", resultDocument)); assertEquals("MINNY", xp.evaluate( "//merge-result:EntityContainer/merge-result-ext:Entity[6]/ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", resultDocument)); //LOG.info(new XmlConverter().toString(resultDocument)); }
From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java
@Test public void testPerformEntityResolution() throws Exception { XPath xp = XPathFactory.newInstance().newXPath(); xp.setNamespaceContext(testNamespaceContext); XmlConverter converter = new XmlConverter(); converter.getDocumentBuilderFactory().setNamespaceAware(true); Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream); // LOG.info(converter.toString(testRequestMessage)); Node entityContainerNode = testRequestMessage .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer") .item(0);/*from w ww.ja v a 2 s. co m*/ assertNotNull(entityContainerNode); List<String> lastNames = new ArrayList<String>(); List<String> firstNames = new ArrayList<String>(); List<String> sids = new ArrayList<String>(); NodeList inputEntityNodes = (NodeList) testRequestMessage .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "Entity"); int inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, inputEntityNodes.getLength()); for (int i = 0; i < inputEntityNodeCount; i++) { Node entityNode = inputEntityNodes.item(i); lastNames.add( xp.evaluate("ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName", entityNode)); firstNames.add( xp.evaluate("ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName", entityNode)); sids.add(xp.evaluate( "ext:PersonSearchResult/ext:Person/jxdm:PersonAugmentation/jxdm:PersonStateFingerprintIdentification/nc:IdentificationID", entityNode)); } Map<String, Integer> lastNameCountMap = new HashMap<String, Integer>(); for (String lastName : lastNames) { Integer count = lastNameCountMap.get(lastName); if (count == null) { count = 0; } lastNameCountMap.put(lastName, ++count); } Map<String, Integer> firstNameCountMap = new HashMap<String, Integer>(); for (String firstName : firstNames) { Integer count = firstNameCountMap.get(firstName); if (count == null) { count = 0; } firstNameCountMap.put(firstName, ++count); } Map<String, Integer> sidCountMap = new HashMap<String, Integer>(); for (String sid : sids) { Integer count = sidCountMap.get(sid); if (count == null) { count = 0; } sidCountMap.put(sid, ++count); } Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null, null); resultDocument.normalizeDocument(); // LOG.info(converter.toString(resultDocument)); NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(3, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:OriginalRecordReference", resultDocument, XPathConstants.NODESET); assertEquals(inputEntityNodeCount, entityNodes.getLength()); for (int i = 0; i < entityNodes.getLength(); i++) { Element e = (Element) entityNodes.item(i); String entityIdRef = e.getAttributeNS(EntityResolutionNamespaceContext.STRUCTURES_NAMESPACE, "ref"); assertNotNull(entityIdRef); assertNotNull(xp.evaluate("//merge-result-ext:Entity[@s:id='" + entityIdRef + "']", resultDocument, XPathConstants.NODE)); } for (String lastName : lastNameCountMap.keySet()) { assertEquals(lastNameCountMap.get(lastName).intValue(), ((Number) xp.evaluate( "count(//merge-result-ext:Entity[ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonSurName='" + lastName + "'])", resultDocument, XPathConstants.NUMBER)).intValue()); } for (String firstName : firstNames) { assertEquals(firstNameCountMap.get(firstName).intValue(), ((Number) xp.evaluate( "count(//merge-result-ext:Entity[ext:PersonSearchResult/ext:Person/nc:PersonName/nc:PersonGivenName='" + firstName + "'])", resultDocument, XPathConstants.NUMBER)).intValue()); } for (String sid : sids) { assertEquals(sidCountMap.get(sid).intValue(), ((Number) xp.evaluate( "count(//merge-result-ext:Entity[ext:PersonSearchResult/ext:Person/jxdm:PersonAugmentation/jxdm:PersonStateFingerprintIdentification/nc:IdentificationID='" + sid + "'])", resultDocument, XPathConstants.NUMBER)).intValue()); } String recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("false", recordLimitExceeded); }
From source file:cz.cas.lib.proarc.common.export.cejsh.CejshBuilder.java
public CejshBuilder(CejshConfig config) throws TransformerConfigurationException, ParserConfigurationException, XPathExpressionException { this.gcalendar = new GregorianCalendar(UTC); this.logLevel = config.getLogLevel(); TransformerFactory xslFactory = TransformerFactory.newInstance(); tranformationErrorHandler = new TransformErrorListener(); bwmetaXsl = xslFactory.newTransformer(new StreamSource(config.getCejshXslUrl())); if (bwmetaXsl == null) { throw new TransformerConfigurationException("Cannot load XSL: " + config.getCejshXslUrl()); }//w w w .j av a 2 s. c o m bwmetaXsl.setOutputProperty(OutputKeys.INDENT, "yes"); bwmetaXsl.setErrorListener(tranformationErrorHandler); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); db = dbf.newDocumentBuilder(); XPathFactory xPathFactory = ProarcXmlUtils.defaultXPathFactory(); XPath xpath = xPathFactory.newXPath(); xpath.setNamespaceContext(new SimpleNamespaceContext().add("m", ModsConstants.NS)); issnPath = xpath.compile("m:mods/m:identifier[@type='issn' and not(@invalid)]"); partNumberPath = xpath.compile("m:mods/m:titleInfo/m:partNumber"); dateIssuedPath = xpath.compile("m:mods/m:originInfo/m:dateIssued"); reviewedArticlePath = xpath.compile("m:mods/m:genre[text()='article' and @type='peer-reviewed']"); }
From source file:gov.nij.bundles.intermediaries.ers.EntityResolutionMessageHandlerTest.java
@Test public void testRecordLimit() throws Exception { XmlConverter converter = new XmlConverter(); converter.getDocumentBuilderFactory().setNamespaceAware(true); Document testRequestMessage = converter.toDOMDocument(testRequestMessageInputStream); Node entityContainerNode = testRequestMessage .getElementsByTagNameNS(EntityResolutionNamespaceContext.ER_EXT_NAMESPACE, "EntityContainer") .item(0);/*from w ww. j a v a 2 s .com*/ assertNotNull(entityContainerNode); Node entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode( String.valueOf(Integer.MAX_VALUE)); Document resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null, entityResolutionConfigurationNode); XPath xp = XPathFactory.newInstance().newXPath(); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); NodeList entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); int inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(3, entityNodes.getLength()); String recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("false", recordLimitExceeded); entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(6 + ""); resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null, entityResolutionConfigurationNode); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(3, entityNodes.getLength()); recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("false", recordLimitExceeded); entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(null); resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null, entityResolutionConfigurationNode); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(3, entityNodes.getLength()); recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("false", recordLimitExceeded); entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode("not an int"); resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, null, entityResolutionConfigurationNode); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(3, entityNodes.getLength()); recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("false", recordLimitExceeded); entityResolutionConfigurationNode = makeEntityResolutionConfigurationNode(2 + ""); Document attributeParametersDocument = entityResolutionMessageHandler.getAttributeParametersDocument(); resultDocument = entityResolutionMessageHandler.performEntityResolution(entityContainerNode, attributeParametersDocument.getDocumentElement(), entityResolutionConfigurationNode); xp.setNamespaceContext(new EntityResolutionNamespaceContext()); entityNodes = (NodeList) xp.evaluate("//merge-result:EntityContainer/merge-result-ext:Entity", resultDocument, XPathConstants.NODESET); inputEntityNodeCount = 6; assertEquals(inputEntityNodeCount, entityNodes.getLength()); entityNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord", resultDocument, XPathConstants.NODESET); assertEquals(6, entityNodes.getLength()); recordLimitExceeded = xp.evaluate( "/merge-result:EntityMergeResultMessage/merge-result:RecordLimitExceededIndicator", resultDocument); assertEquals("true", recordLimitExceeded); // LOG.info(new XmlConverter().toString(resultDocument)); NodeList statNodes = (NodeList) xp.evaluate("//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality", resultDocument, XPathConstants.NODESET); assertEquals(6, statNodes.getLength()); statNodes = (NodeList) xp.evaluate( "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics", resultDocument, XPathConstants.NODESET); assertEquals(12, statNodes.getLength()); statNodes = (NodeList) xp.evaluate( "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:AttributeXPath", resultDocument, XPathConstants.NODESET); assertEquals(12, statNodes.getLength()); statNodes = (NodeList) xp.evaluate( "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:StringDistanceMeanInRecord", resultDocument, XPathConstants.NODESET); assertEquals(12, statNodes.getLength()); statNodes = (NodeList) xp.evaluate( "//merge-result-ext:MergedRecord/merge-result-ext:MergeQuality/merge-result-ext:StringDistanceStatistics/merge-result-ext:StringDistanceStandardDeviationInRecord", resultDocument, XPathConstants.NODESET); assertEquals(12, statNodes.getLength()); }
From source file:com.jkoolcloud.tnt4j.streams.parsers.ActivityXmlParserTest.java
@Test public void testNamespaceAwareXpathResolveWithGenuineParser() throws Exception { NamespaceTestSuite testSuite = new NamespaceTestSuite().invoke(); DocumentBuilderFactory domFactory = testSuite.getDomFactory(); String xmlString = testSuite.getXmlString(); XPath xPath = testSuite.getxPath(); Map<String, String> namespaces = testSuite.getNamespaces(); DocumentBuilder builder = domFactory.newDocumentBuilder(); Document document = builder.parse(IOUtils.toInputStream(xmlString, Utils.UTF8)); XMLFromBinDataPreParser xmlFromBinDataPreParser = new XMLFromBinDataPreParser(); NamespaceMap nsContext = new NamespaceMap(); xPath.setNamespaceContext(nsContext); nsContext.addPrefixUriMappings(namespaces); NamespaceMap documentNamespaces = new NamespaceMap(); StreamsXMLUtils.resolveDocumentNamespaces(document, documentNamespaces, false); String evaluate = xPath.compile("/soapenv:Envelope/soapenv:Header/ch:TSYSprofileInq/ch:clientData") .evaluate(document);// w w w . j a v a2 s .c o m assertEquals("xxxxxx-343e-46af-86aa-634a3688cf30", evaluate); evaluate = xPath.compile("/Envelope/Header/TSYSprofileInq/clientData").evaluate(document); assertEquals("", evaluate); }
From source file:com.esri.gpt.server.csw.provider3.GetRecordsProvider.java
/** * Builds an ogc:Filter node from HTTP GET parameters. * @param namespace the namespace parameter values * @param constraintFilter the constraint parameter value * @throws Exception if a processing exception occurs *//*from www .j a v a 2 s .c o m*/ protected Node buildFilterNode(String[] namespace, String constraintFilter) throws Exception { // TODO GetRecordsDomBuilder had a different pattern?? // parse namespaces // pattern: namespace=xmlns(ogc=http://www.opengis.net/ogc),xmlns(gml=http://www.opengis.net/gml)... StringBuilder nsBuffer = new StringBuilder(); boolean hasCswUri = false; boolean hasCswPfx = false; String cswPfx = ""; List<String[]> parseNamespace = parseNamespace(namespace); for (String[] ns : parseNamespace) { String nsUri = ns[0]; String nsPfx = ns[1]; if (nsUri.equals(CswNamespaces.CSW_30.URI_CSW())) { hasCswUri = true; if (!nsPfx.isEmpty()) { hasCswPfx = true; cswPfx = nsPfx; } } if (nsPfx.isEmpty()) { nsBuffer.append(" xmlns=\"").append(nsUri).append("\""); } else { nsBuffer.append(" xmlns:").append(nsPfx).append("=\"").append(nsUri).append("\""); } } // use ogc as the default namespace if no namespace parameter was supplied if (nsBuffer.length() == 0) { nsBuffer.append(" xmlns=\"http://www.opengis.net/ogc\""); } // build the constraint XML StringBuilder sbXml = new StringBuilder("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); if (hasCswUri && hasCswPfx) { cswPfx = cswPfx + ":"; } else if (hasCswUri) { cswPfx = ""; } else { cswPfx = "csw:"; nsBuffer.append(" xmlns:csw=\"http://www.opengis.net/cat/csw/3.0\""); } sbXml.append("\r\n<").append(cswPfx).append("Constraint"); if (nsBuffer.length() > 0) { sbXml.append(" ").append(nsBuffer); } sbXml.append(">"); sbXml.append("\r\n").append(constraintFilter); sbXml.append("\r\n</").append(cswPfx).append("Constraint>"); // make the dom, find the ogc:Filter node try { Document dom = DomUtil.makeDomFromString(sbXml.toString(), true); CswNamespaces ns = CswNamespaces.CSW_30; XPath xpath = XPathFactory.newInstance().newXPath(); xpath.setNamespaceContext(ns.makeNamespaceContext()); Node ndFilter = null; Node ndConstraint = (Node) xpath.evaluate("csw:Constraint", dom, XPathConstants.NODE); if (ndConstraint != null) { ndFilter = (Node) xpath.evaluate("ogc:Filter", ndConstraint, XPathConstants.NODE); ; } if (ndFilter == null) { String msg = "The supplied constraint was not a valid ogc:Filter."; throw new OwsException(OwsException.OWSCODE_NoApplicableCode, "constraint", msg); } else { return ndFilter; } } catch (SAXException e) { String msg = "The supplied namespace/constraint pairs were not well-formed xml: "; msg += " " + e.toString(); throw new OwsException(OwsException.OWSCODE_NoApplicableCode, "constraint", msg); } }
From source file:com.geodan.ngr.serviceintegration.CSWTransformer.java
/** * Parses the InputStream to valid WMSResponses and returns them in a list using XPath. * * This method is essentially unchanged from the old Geodan implementation except it now parses a String. * * @param response the String that contains the response from the GetRecords request * @return a List that contains WMSResources or errors * @throws java.io.IOException in case of exception * @throws javax.xml.parsers.ParserConfigurationException in case of exception * @throws org.xml.sax.SAXException in case of exception *///w w w.ja v a2 s .com private List<WMSResource> parse(String response) throws ParserConfigurationException, IOException, SAXException { List<WMSResource> wmsresourcelist = new ArrayList<WMSResource>(); // // Create DOM document from response // DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); InputSource source = new InputSource(new StringReader(response)); Document xmldoc = factory.newDocumentBuilder().parse(source); // With XPath get the WMS data XPath xpath = XPathFactory.newInstance().newXPath(); NamespaceContext nsContext = new CSWNamespaceContext(); xpath.setNamespaceContext(nsContext); // The XML parse expression String expr = "/GetRecordsResponse/SearchResults/MD_Metadata/distributionInfo/MD_Distribution/transferOptions/MD_DigitalTransferOptions/onLine/CI_OnlineResource"; try { // Run XPath NodeList nodes = (NodeList) xpath.evaluate(expr, xmldoc, XPathConstants.NODESET); // Check for nodes else generate error no records available if (nodes != null && nodes.getLength() > 0) { // Get for every node the values if no name and URL are available then generate a error. If the title has no value then the name can be the title. for (int i = 0; i < nodes.getLength(); i++) { Element el = (Element) nodes.item(i); String title = findTitle(el); String description = findDescription(el); String url = getValue(el, "gmd:linkage"); String protocol = getValue(el, "gmd:protocol"); String name = getValue(el, "gmd:name"); if (name != null && url != null && !name.equals("") && !url.equals("")) { WMSResource wmsresource = new WMSResource(title, url, protocol, name, description); if (title == null) { wmsresource.setTitle(name); } wmsresourcelist.add(wmsresource); } else { // Because there already is an List<WMSRecords> the method "getException" will not be used WMSResource wmsresource = new WMSResource(" \"records\": []}}"); wmsresourcelist.add(wmsresource); } } } else { // Because there already is an List<WMSRecords> the method "getException" will not be used WMSResource wmsresource = new WMSResource(" \"records\": []}}"); wmsresourcelist.add(wmsresource); } } catch (XPathExpressionException e) { // Because there already is an List<WMSRecords> the method "getException" will not be used WMSResource wmsresource = new WMSResource("\"error\": \"There is an XPathExpressionException\"}}"); wmsresourcelist.add(wmsresource); } catch (Exception e) { log.error("ERROR: " + e.getMessage()); e.printStackTrace(); // Because there already is an List<WMSRecords> the method "getException" will not be used WMSResource wmsresource = new WMSResource("\"error\": \"The result could not be parsed\"}}"); wmsresourcelist.add(wmsresource); } // Return the results return wmsresourcelist; }