Advertisement
raffaele181188

Collada XPath

Jul 28th, 2012
274
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.68 KB | None | 0 0
  1. package com.zybnet;
  2.  
  3. import java.util.Iterator;
  4.  
  5. import javax.xml.namespace.NamespaceContext;
  6. import javax.xml.parsers.DocumentBuilder;
  7. import javax.xml.parsers.DocumentBuilderFactory;
  8. import javax.xml.parsers.ParserConfigurationException;
  9. import javax.xml.xpath.XPath;
  10. import javax.xml.xpath.XPathConstants;
  11. import javax.xml.xpath.XPathFactory;
  12.  
  13. import org.w3c.dom.NodeList;
  14.  
  15. public class ColladaXPath {
  16.  
  17.     public static void main(String[] args) throws Exception {
  18.         NodeList coords = (NodeList) xpath.evaluate("//c:triangles/c:p/text()",
  19.                 builder.parse(new URL("http://purple-works.com/yardstick/tablemaya.dae").openStream()),
  20.                 XPathConstants.NODESET);
  21.        
  22.         for (int i = 0; i < coords.getLength(); i++) {
  23.             System.out.println(String.format("This <p> contains %d indices:" ,
  24.                     coords.item(i).getNodeValue().split("\\s+").length));
  25.         }
  26.        
  27.     }
  28.  
  29.     static XPath xpath;
  30.     static DocumentBuilder builder;
  31.    
  32.     static {
  33.         DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
  34.         domFactory.setNamespaceAware(true); // !IMPORTANT
  35.        
  36.         try {
  37.             builder = domFactory.newDocumentBuilder();
  38.         } catch (ParserConfigurationException e) {
  39.             e.printStackTrace();
  40.         }
  41.        
  42.         xpath = XPathFactory.newInstance().newXPath();
  43.         xpath.setNamespaceContext(new ColladaNamespaceCtx());
  44.     }
  45.    
  46.     private static class ColladaNamespaceCtx implements NamespaceContext {
  47.         @Override
  48.         public String getNamespaceURI(String prefix) {
  49.             return "http://www.collada.org/2005/11/COLLADASchema";
  50.         }
  51.  
  52.         @Override
  53.         public String getPrefix(String namespaceURI) {
  54.             return "c";
  55.         }
  56.  
  57.         @Override
  58.         public Iterator<?> getPrefixes(String namespaceURI) {
  59.             return null;
  60.         }
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement