javax.xml.xpath.XPathExpression#evaluate ( )源码实例Demo

下面列出了javax.xml.xpath.XPathExpression#evaluate ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: openxds   文件: CrossGatewayQueryTest.java
private NodeList getElementValue(OMElement response, String type, String element, String value)throws ParserConfigurationException, IOException, SAXException, XPathExpressionException{
		
		DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
	    domFactory.setNamespaceAware(false); // never forget this!
	    DocumentBuilder builder = domFactory.newDocumentBuilder();
	    Document doc = builder.parse(new StringInputStream(response.toString()));
	    
		XPathFactory factory = XPathFactory.newInstance();
		XPath xpath = factory.newXPath();
		XPathExpression expr = null;
		if (type.equalsIgnoreCase("ExtrinsicObject"))
			expr = xpath.compile("//AdhocQueryResponse/RegistryObjectList/ExtrinsicObject[@"+element+"='"+value+"']"); 
		if (type.equalsIgnoreCase("ExternalIdentifier"))
			expr = xpath.compile("//AdhocQueryResponse/RegistryObjectList/ExtrinsicObject/ExternalIdentifier[@"+element+"='"+value+"']"); 
		Object res = expr.evaluate(doc, XPathConstants.NODESET);
	    NodeList nodes = (NodeList) res;
		return nodes;
}
 
private Node findFirstElementByName(String name, Document doc) {
    XPathFactory xpathfactory = XPathFactory.newInstance();
    XPath xpath = xpathfactory.newXPath();
    try {
        XPathExpression expr = xpath.compile("//*[@name='" + name + "']");
        Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;
        if (nodes == null || nodes.getLength() < 1) {
            return null;
        }
        return nodes.item(0);
    } catch (XPathExpressionException e) {
        log.error("Error occurred while finding element " + name + "in given document", e);
        return null;
    }
}
 
源代码3 项目: Quelea   文件: ProPresenterParser.java
private Optional<String> getSectionTextLegacy(Node slideNode) {
	try {
		XPathFactory xPathfactory = XPathFactory.newInstance();
		StringBuilder ret = new StringBuilder();
		XPathExpression expr = xPathfactory.newXPath().compile(".//RVTextElement");
		NodeList lines = (NodeList) expr.evaluate(slideNode, XPathConstants.NODESET);
		LOGGER.log(Level.INFO, "Found {0} lines", lines.getLength());
		for (int j = 0; j < lines.getLength(); j++) {
			Node lineNode = lines.item(j);
			String line = new String(Base64.getDecoder().decode(lineNode.getAttributes().getNamedItem("RTFData").getTextContent()), Charset.forName("UTF-8"));
			line = stripRtfTags(line).trim();
			ret.append(line).append('\n');
		}
		return Optional.of(ret.toString());
	} catch (XPathExpressionException | DOMException ex) {
		LOGGER.log(Level.SEVERE, "Error with import legacy", ex);
		return Optional.empty();
	}
}
 
源代码4 项目: SAMLRaider   文件: XMLHelpers.java
/**
 * Set the ID Attribute in an XML Document so that java recognises the ID
 * Attribute as a real id
 *
 * @param document
 *            Document to set the ids
 */
public void setIDAttribute(Document document) {
	try {
		if(Thread.currentThread().getContextClassLoader() == null){
			Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); 
		}
		XPath xpath = XPathFactory.newInstance().newXPath();
		XPathExpression expr = xpath.compile("//*[@ID]");
		NodeList nodeList = (NodeList) expr.evaluate(document, XPathConstants.NODESET);
		for (int i = 0; i < nodeList.getLength(); i++) {
			Element elem = (Element) nodeList.item(i);
			Attr attr = (Attr) elem.getAttributes().getNamedItem("ID");
			elem.setIdAttributeNode(attr, true);
		}
	} catch (XPathExpressionException e) {
		e.printStackTrace();
	}
}
 
源代码5 项目: zap-extensions   文件: SAMLMessage.java
/** Get the saml attributes from the saml message which are also in the configured list */
private void buildAttributeMap() {
    // xpath initialization
    XPathFactory xFactory = XPathFactory.newInstance();
    XPath xpath = xFactory.newXPath();
    Set<Attribute> allAttributes = SAMLConfiguration.getInstance().getAvailableAttributes();
    for (Attribute attribute : allAttributes) {
        try {
            XPathExpression expression = xpath.compile(attribute.getxPath());
            Node node = (Node) expression.evaluate(xmlDocument, XPathConstants.NODE);
            if (node != null) { // the attributes that aren't available will be giving null
                // values
                String value;
                if (node instanceof Element) {
                    value = node.getTextContent();
                } else if (node instanceof Attr) {
                    value = ((Attr) node).getValue();
                } else {
                    value = node.getNodeValue();
                }
                if (value != null && !"".equals(value)) {
                    Attribute newAttrib = attribute.createCopy();
                    newAttrib.setValue(value);
                    attributeMap.put(attribute.getName(), newAttrib);
                }
            }
        } catch (XPathExpressionException e) {
            log.warn(attribute.getxPath() + " is not a valid XPath", e);
        }
    }
}
 
源代码6 项目: eet-client   文件: DemoRequestHolder.java
String getXPathValue(final String xpathQuery) throws Exception {
    final XPathFactory xPathfactory = XPathFactory.newInstance();
    final XPath xpath = xPathfactory.newXPath();
    final XPathExpression expr = xpath.compile(xpathQuery);
    final Object evaluate = expr.evaluate(this.request, XPathConstants.STRING);
    return evaluate.toString();
}
 
源代码7 项目: jpmml-model   文件: DOMUtil.java
static
public Node selectNode(byte[] bytes, String expression) throws Exception {
	Document document = parseDocument(bytes);

	XPathExpression xPathExpression = compile(document, expression);

	return (Node)xPathExpression.evaluate(document, XPathConstants.NODE);
}
 
源代码8 项目: analysis-model   文件: ClangAnalyzerPlistParser.java
private static String extractField(final Element diag, final XPathExpression expr) throws XPathExpressionException {
    NodeList keys = (NodeList) expr.evaluate(diag, XPathConstants.NODESET);

    List<Element> elements = XmlElementUtil.nodeListToList(keys);
    if (elements.isEmpty()) {
        return "";
    }

    return elements.get(0).getTextContent();
}
 
源代码9 项目: cloudstack   文件: OvmObject.java
public <E> Map<String, E> xmlToMap(String path, Document xmlDocument)
        throws Ovm3ResourceException {
    XPathFactory factory = javax.xml.xpath.XPathFactory.newInstance();
    XPath xPath = factory.newXPath();
    try {
        XPathExpression xPathExpression = xPath.compile(path);
        NodeList nodeList = (NodeList) xPathExpression.evaluate(xmlDocument,
                XPathConstants.NODESET);
        Map<String, E> myMap = new HashMap<String, E>();
        for (int ind = 0; ind < nodeList.getLength(); ind++) {
            NodeList nodeListFor = nodeList.item(ind).getChildNodes();
            for (int index = 0; index < nodeListFor.getLength(); index++) {
                String rnode = nodeListFor.item(index).getNodeName();
                NodeList nodeListFor2 = nodeListFor.item(index).getChildNodes();
                if (nodeListFor2.getLength() > 1) {
                    /* Do we need to figure out all the sub elements here and put them in a map? */
                } else {
                    String element = nodeListFor.item(index).getNodeValue();
                    myMap.put(rnode, (E) element);
                }
            }
        }
        return myMap;
    } catch (XPathExpressionException e) {
        throw new Ovm3ResourceException("Problem parsing XML to Map:", e);
    }
}
 
源代码10 项目: storm-crawler   文件: SubDocumentsParseFilter.java
@Override
public void filter(String URL, byte[] content, DocumentFragment doc,
        ParseResult parse) {

    InputStream stream = new ByteArrayInputStream(content);

    try {
        DocumentBuilderFactory factory = DocumentBuilderFactory
                .newInstance();
        Document document = factory.newDocumentBuilder().parse(stream);
        Element root = document.getDocumentElement();

        XPath xPath = XPathFactory.newInstance().newXPath();
        XPathExpression expression = xPath.compile("//url");

        NodeList nodes = (NodeList) expression.evaluate(root,
                XPathConstants.NODESET);

        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);

            expression = xPath.compile("loc");
            Node child = (Node) expression.evaluate(node,
                    XPathConstants.NODE);

            // create a subdocument for each url found in the sitemap
            ParseData parseData = parse.get(child.getTextContent());

            NodeList childs = node.getChildNodes();
            for (int j = 0; j < childs.getLength(); j++) {
                Node n = childs.item(j);
                parseData.put(n.getNodeName(), n.getTextContent());
            }
        }
    } catch (Exception e) {
        LOG.error("Error processing sitemap from {}: {}", URL, e);
    }
}
 
源代码11 项目: TranskribusCore   文件: XPathTest.java
public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, XPathFactoryConfigurationException{
		ClassLoader cl = XPathTest.class.getClassLoader();
//		DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance("com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl", cl);
		DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();

//		domFactory.setNamespaceAware(true);
//		XPathFactory xpathFactory = XPathFactory.newInstance(javax.xml.xpath.XPathFactory.DEFAULT_OBJECT_MODEL_URI, "com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl", cl);
		XPathFactory xpathFactory = XPathFactory.newInstance();

		XPath xpath = xpathFactory.newXPath();
		xpath.getNamespaceContext();
		DocumentBuilder builder = domFactory.newDocumentBuilder();
		File f = new File("/mnt/dea_scratch/TRP/test/Klassikerausgaben_test/page/bsb00087391_00009.xml");
		
		Document catalog = builder.parse(f);

		final XPathExpression expr = xpath.compile("//*[contains(name(), 'Page')]/@imageWidth");

//		Object result = expr.evaluate(catalog, XPathConstants.NUMBER);
//		Double res = (Double)result;
//		System.out.println(res);
		
		Object result = expr.evaluate(catalog, XPathConstants.STRING);
		String res = (String)result;
		System.out.println(res);
		
//		Object result = expr.evaluate(catalog, XPathConstants.NODESET);
//		NodeList nodes = (NodeList) result;
//		if (nodes.getLength() > 0) {
//			String[] parents = new String[nodes.getLength()];
//			for (int i = 0; i < nodes.getLength(); i++) {
//				parents[i] = nodes.item(i).getNodeValue();
//				System.out.println(parents[i]);
//			}
//		}
	}
 
源代码12 项目: web-feature-service   文件: StoredQueryManager.java
protected Element processStoredQueryElement(Element root, String handle) throws WFSException {
	try {
		NodeList nodeList = root.getElementsByTagNameNS(Constants.WFS_NAMESPACE_URI, "StoredQueryDescription");
		if (nodeList.getLength() == 0 || nodeList.getLength() > 1)
			throw new WFSException(WFSExceptionCode.OPERATION_PROCESSING_FAILED, "Failed to parse the stored query file. No stored query description provided.", handle);

		Element description = (Element)nodeList.item(0);

		// copy namespace attributes from root element
		NamedNodeMap attributes = root.getAttributes();
		for (int i = 0; i < attributes.getLength(); i++) {
			Attr attribute = (Attr)attributes.item(i);
			if (attribute.getNamespaceURI().equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)) {
				if (attribute.getValue().equals("http://www.w3.org/2001/SMIL20/") 
						|| attribute.getValue().equals("http://www.w3.org/2001/SMIL20/Language"))
					continue;

				description.setAttributeNS(attribute.getNamespaceURI(), attribute.getName(), attribute.getValue());
			}
		}

		// remove empty text nodes
		XPathFactory xpathFactory = XPathFactory.newInstance();
		XPathExpression xpathExp = xpathFactory.newXPath().compile("//text()[normalize-space(.) = '']");  
		NodeList emptyNodeList = (NodeList)xpathExp.evaluate(root, XPathConstants.NODESET);
		for (int i = 0; i < emptyNodeList.getLength(); i++) {
			Node emptyNode = emptyNodeList.item(i);
			emptyNode.getParentNode().removeChild(emptyNode);
		}

		return description;
	} catch (XPathExpressionException e) {
		throw new WFSException(WFSExceptionCode.OPERATION_PROCESSING_FAILED, "Fatal error whilst processing the stored query.", handle, e);
	}
}
 
private List<Node> getNodes(Document document, String path) throws XPathExpressionException
{
  XPathExpression pathExpr = xpath.compile(path);
  NodeList nodeList = (NodeList)pathExpr.evaluate(document, XPathConstants.NODESET);
  List<Node> nodes = new ArrayList<Node>();
  for (int i = 0; i < nodeList.getLength(); ++i) {
    nodes.add(nodeList.item(i));
  }
  return nodes;
}
 
源代码14 项目: maven-framework-project   文件: StaxQueryXML.java
public void query() throws ParserConfigurationException, SAXException,IOException, XPathExpressionException {
	// Standard of reading a XML file
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	factory.setNamespaceAware(true);
	DocumentBuilder builder;
	Document doc = null;
	XPathExpression expr = null;
	builder = factory.newDocumentBuilder();
	doc = builder.parse(ClassLoader.getSystemResourceAsStream("person.xml"));

	// Create a XPathFactory
	XPathFactory xFactory = XPathFactory.newInstance();

	// Create a XPath object
	XPath xpath = xFactory.newXPath();

	// Compile the XPath expression
	expr = xpath.compile("//person[firstname='Lars']/lastname/text()");
	// Run the query and get a nodeset
	Object result = expr.evaluate(doc, XPathConstants.NODESET);

	// Cast the result to a DOM NodeList
	NodeList nodes = (NodeList) result;
	for (int i = 0; i < nodes.getLength(); i++) {
		System.out.println(nodes.item(i).getNodeValue());
	}

	// New XPath expression to get the number of people with name lars
	expr = xpath.compile("count(//person[firstname='Lars'])");
	// Run the query and get the number of nodes
	Double number = (Double) expr.evaluate(doc, XPathConstants.NUMBER);
	System.out.println("Number of objects " + number);

	// Do we have more then 2 people with name lars?
	expr = xpath.compile("count(//person[firstname='Lars']) >2");
	// Run the query and get the number of nodes
	Boolean check = (Boolean) expr.evaluate(doc, XPathConstants.BOOLEAN);
	System.out.println(check);

}
 
源代码15 项目: XACML   文件: XPathExpressionWrapper.java
@Override
public String evaluate(Object item) throws XPathExpressionException {
	XPathExpression thisXPathExpression	= this.getXpathExpressionWrapped();
	return (thisXPathExpression == null ? null : thisXPathExpression.evaluate(item));
}
 
源代码16 项目: irontest   文件: XMLUtils.java
/**
 * If the input string is well formed XML, return its pretty-print format. Otherwise, return it as is.
 * If the input is null, return null.
 * @param input
 * @return
 * @throws TransformerException
 */
public static String prettyPrintXML(String input) throws TransformerException, XPathExpressionException {
    if (input == null) {
        return null;
    } else {
        Document doc;
        try {
            doc = XMLUtils.xmlStringToDOM(input);
        } catch (Exception e) {
            //  the input string is not well formed XML
            return input;
        }

        //  Remove blank text nodes from doc (if a blank text node is the only child of a parent node, leave it untouched. e.g. <c>    </c> will not become <c/>).
        //  A blank text node is a text node containing one or more whitespaces.
        //  This code block is used to mitigate a Transformer issue introduced since Java 9. Refer to http://java9.wtf/xml-transformer/.
        //      For Transformer since Java 9, text node that is sibling of element is treated like an element.
        //          e.g. <a>ccc<b>123</b></a> will be pretty printed as
        //            <a>
        //              ccc
        //              <b>123</b>
        //            </a>.
        //      If such a text node is blank, the output xml will contain an empty/blank line.
        //          e.g. <a> <b>123</b></a> will be pretty printed as
        //            <a>
        //
        //              <b>123</b>
        //            </a>
        XPathFactory xpathFactory = XPathFactory.newInstance();
        XPathExpression xpathExp = xpathFactory.newXPath().compile("//text()[normalize-space(.) = '']");
        NodeList blankTextNodes = (NodeList) xpathExp.evaluate(doc, XPathConstants.NODESET);
        for (int i = 0; i < blankTextNodes.getLength(); i++) {
            Node blankTextNode = blankTextNodes.item(i);
            if (blankTextNode.getNextSibling() != null || blankTextNode.getPreviousSibling() != null) {
                blankTextNode.getParentNode().removeChild(blankTextNode);
            }
        }

        //  pretty print the xml
        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        if (input.startsWith("<?xml")) {
            transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes");  // add line break after xml declaration
        } else {
            transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        }
        StreamResult result = new StreamResult(new StringWriter());
        DOMSource source = new DOMSource(doc);
        transformer.transform(source, result);
        return result.getWriter().toString();
    }
}
 
源代码17 项目: XACML   文件: XPathExpressionWrapper.java
@Override
public String evaluate(InputSource source) throws XPathExpressionException {
	XPathExpression thisXPathExpression	= this.getXpathExpressionWrapped();
	return (thisXPathExpression == null ? null : thisXPathExpression.evaluate(source));
}
 
源代码18 项目: buck   文件: SchemeGeneratorTest.java
@Test
public void serializesEnvironmentVariables() throws Exception {
  ImmutableMap.Builder<PBXTarget, Path> targetToProjectPathMapBuilder = ImmutableMap.builder();

  PBXTarget rootTarget =
      new PBXNativeTarget("rootRule", AbstractPBXObjectFactory.DefaultFactory());
  rootTarget.setGlobalID("rootGID");
  rootTarget.setProductReference(
      new PBXFileReference(
          "root.a", "root.a", PBXReference.SourceTree.BUILT_PRODUCTS_DIR, Optional.empty()));
  rootTarget.setProductType(ProductTypes.STATIC_LIBRARY);

  Path pbxprojectPath = Paths.get("foo/Foo.xcodeproj/project.pbxproj");
  targetToProjectPathMapBuilder.put(rootTarget, pbxprojectPath);

  ImmutableMap<SchemeActionType, ImmutableMap<String, String>> environmentVariables =
      ImmutableMap.of(SchemeActionType.LAUNCH, ImmutableMap.of("ENV_VARIABLE", "IS_SET"));

  SchemeGenerator schemeGenerator =
      new SchemeGenerator(
          projectFilesystem,
          Optional.of(rootTarget),
          ImmutableSet.of(rootTarget),
          ImmutableSet.of(),
          ImmutableSet.of(),
          "TestScheme",
          Paths.get("_gen/Foo.xcworkspace/scshareddata/xcshemes"),
          true /* parallelizeBuild */,
          Optional.empty() /* wasCreatedForAppExtension */,
          Optional.empty() /* runnablePath */,
          Optional.empty() /* remoteRunnablePath */,
          SchemeActionType.DEFAULT_CONFIG_NAMES,
          targetToProjectPathMapBuilder.build(),
          Optional.of(environmentVariables),
          Optional.empty(),
          Optional.empty(),
          XCScheme.LaunchAction.LaunchStyle.AUTO,
          Optional.empty(), /* watchAdapter */
          Optional.empty() /* notificationPayloadFile */);

  Path schemePath = schemeGenerator.writeScheme();

  DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  Document scheme = dBuilder.parse(projectFilesystem.newFileInputStream(schemePath));

  XPathFactory xpathFactory = XPathFactory.newInstance();
  XPath buildActionXpath = xpathFactory.newXPath();
  XPathExpression buildActionExpr =
      buildActionXpath.compile("//LaunchAction/EnvironmentVariables/EnvironmentVariable");
  NodeList envVariableList = (NodeList) buildActionExpr.evaluate(scheme, XPathConstants.NODESET);

  assertThat(envVariableList.getLength(), is(1));
  Node envVar = envVariableList.item(0);
  assertThat(envVar.getAttributes().getNamedItem("key").getNodeValue(), equalTo("ENV_VARIABLE"));
  assertThat(envVar.getAttributes().getNamedItem("value").getNodeValue(), equalTo("IS_SET"));
}
 
源代码19 项目: steady   文件: AbstractPolicySecurityTest.java
protected void verifySignatureAlgorithms(Document signedDoc, AssertionInfoMap aim) throws Exception { 
    final AssertionInfo assertInfo = aim.get(SP12Constants.ASYMMETRIC_BINDING).iterator().next();
    assertNotNull(assertInfo);
    
    final AsymmetricBinding binding = (AsymmetricBinding) assertInfo.getAssertion();
    final String expectedSignatureMethod = binding.getAlgorithmSuite().getAsymmetricSignature();
    final String expectedDigestAlgorithm = binding.getAlgorithmSuite().getDigest();
    final String expectedCanonAlgorithm  = binding.getAlgorithmSuite().getInclusiveC14n();
        
    XPathFactory factory = XPathFactory.newInstance();
    XPath xpath = factory.newXPath();
    final NamespaceContext nsContext = this.getNamespaceContext();
    xpath.setNamespaceContext(nsContext);
    
    // Signature Algorithm
    final XPathExpression sigAlgoExpr = 
        xpath.compile("/s:Envelope/s:Header/wsse:Security/ds:Signature/ds:SignedInfo" 
                          + "/ds:SignatureMethod/@Algorithm");
    
    final String sigMethod =  (String) sigAlgoExpr.evaluate(signedDoc, XPathConstants.STRING);
    assertEquals(expectedSignatureMethod, sigMethod);
    
    // Digest Method Algorithm
    final XPathExpression digestAlgoExpr = xpath.compile(
        "/s:Envelope/s:Header/wsse:Security/ds:Signature/ds:SignedInfo/ds:Reference/ds:DigestMethod");
    
    final NodeList digestMethodNodes = 
        (NodeList) digestAlgoExpr.evaluate(signedDoc, XPathConstants.NODESET);
    
    for (int i = 0; i < digestMethodNodes.getLength(); i++) {
        Node node = (Node)digestMethodNodes.item(i);
        String digestAlgorithm = node.getAttributes().getNamedItem("Algorithm").getNodeValue();
        assertEquals(expectedDigestAlgorithm, digestAlgorithm);
    }
    
    // Canonicalization Algorithm
    final XPathExpression canonAlgoExpr =
        xpath.compile("/s:Envelope/s:Header/wsse:Security/ds:Signature/ds:SignedInfo" 
                          + "/ds:CanonicalizationMethod/@Algorithm");
    final String canonMethod =  (String) canonAlgoExpr.evaluate(signedDoc, XPathConstants.STRING);
    assertEquals(expectedCanonAlgorithm, canonMethod);
}
 
源代码20 项目: TranskribusCore   文件: TrpXPathProcessor.java
protected Object evaluate(Object item, XPathExpression xPathExp, QName returnType) throws XPathExpressionException {
	if(item == null || xPathExp == null) {
		throw new IllegalArgumentException("An argument is null!");
	}
	return xPathExp.evaluate(item, returnType);
}