Package eu.scape_project.planning.utils

Source Code of eu.scape_project.planning.utils.XmlXPathEvaluator

/*******************************************************************************
* Copyright 2006 - 2012 Vienna University of Technology,
* Department of Software Technology and Interactive Systems, IFS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package eu.scape_project.planning.utils;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.Serializable;

import javax.activity.InvalidActivityException;
import javax.management.modelmbean.XMLParseException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.xml.sax.SAXException;

/**
* Class responsible for evaluating XPath expressions on a given xml-document/string.
*
* @author Markus Hamm
*/
public class XmlXPathEvaluator implements Serializable {
  private static final long serialVersionUID = -5184499592773830923L;
 
  /**
   * xml data represented as document.
   */
  private Document xmlDocument;
 
  public XmlXPathEvaluator() {
    this.xmlDocument = null;
  }
 
  /**
   * Method responsible for setting the xml to query.
   *
   * @param xml String representation of xml data.
   * @throws IOException
   * @throws SAXException
   * @throws ParserConfigurationException
   */
  public void setXmlToParse(String xml) throws SAXException, IOException, ParserConfigurationException {
    // Create a parsable document out of the xml string
    DocumentBuilderFactory documentFactory = DocumentBuilderFactory.newInstance();
    documentFactory.setNamespaceAware(false);

    DocumentBuilder builder = documentFactory.newDocumentBuilder();
    xmlDocument = builder.parse(new ByteArrayInputStream(xml.getBytes()));
  }
 
  /**
   * Method responsible for extracting a XPath value from the current xml-document.
   *
   * @param xPathString
   * @return XPath value extracted from current xml-document
   * @throws InvalidActivityException
   * @throws XPathExpressionException
   */
  public String extractValue(String xPathString) throws InvalidActivityException, XPathExpressionException {
    if (xmlDocument == null) {
      throw new InvalidActivityException("No xml document set to parse.");
    }
   
    // Query the xml document by several XPath queries
    XPathFactory xPathFactory = XPathFactory.newInstance();
    XPath xPath = xPathFactory.newXPath();
   
    XPathExpression expression = xPath.compile(xPathString);
    Object xx = expression.evaluate(xmlDocument, XPathConstants.STRING);
    String result = (String) expression.evaluate(xmlDocument, XPathConstants.STRING);
   
    return result;
  }
}
TOP

Related Classes of eu.scape_project.planning.utils.XmlXPathEvaluator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.