Java by API/javax.xml.xpath/XPathVariableResolver

Материал из Java эксперт
Перейти к: навигация, поиск

implements XPathVariableResolver

   <source lang="java">
 

import java.io.File; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Hashtable; import javax.xml.namespace.QName; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathFactory; import javax.xml.xpath.XPathVariableResolver; import org.w3c.dom.Document; import org.w3c.dom.Element; public class Main {

 public static void main(String[] args) throws Exception {
   SimpleDateFormat xmlDateFormat = new SimpleDateFormat("MM.dd.yy");
   MapVariableResolver resolver = new MapVariableResolver();
   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
   DocumentBuilder builder = dbf.newDocumentBuilder();
   Document document = builder.parse(new File("t.xml"));
   XPathFactory factory = XPathFactory.newInstance();
   XPath xPath = factory.newXPath();
   xPath.setXPathVariableResolver(resolver);
   XPathExpression expression = xPath.rupile("/schedule/show[@date=$date]/guest");
   String formattedDate = xmlDateFormat.format(new Date(2006, 5, 14));
   resolver.addVariable(null, "date", formattedDate);
   Element guest = (Element) expression.evaluate(document, XPathConstants.NODE);
   System.out.println(guest.getElementsByTagName("name").item(0).getTextContent());
 }

} class MapVariableResolver implements XPathVariableResolver {

 private Hashtable variables = new Hashtable();
 public void addVariable(String namespaceURI, String localName, Object value) {
   addVariable(new QName(namespaceURI, localName), value);
 }
 public void addVariable(QName name, Object value) {
   variables.put(name, value);
 }
 public Object resolveVariable(QName name) {
   Object retval = variables.get(name);
   return retval;
 }

}


 </source>