JAXP实现在XPath中获取带命名空间的节点(NamespaceContext)
public static void main(String[] args) throws IOException, XPathExpressionException {XPathFactory factory = XPathFactory.newInstance();XPath xPath = factory.newXPath();DefaultNamespaceContext defaultNamespaceContext = new DefaultNamespaceContext();/* * 设置前缀与命名空间URI的映射关系 * XPath表达式中使用的前缀与文档中实际的前缀并没有关联,这里只是为了在XPath中增加一个前缀标识所有。 * 但前缀对应的命名空间URI必须与文档中实际的命名空间URI保持一致 */defaultNamespaceContext.addNamespace("t", "http://www.appdemo.daniele.com/schema/templet");xPath.setNamespaceContext(defaultNamespaceContext); InputSource source = new InputSource(new FileInputStream(new File("resource/xml/schema/schema_test.xml")));String expression = "/t:templet/t:bean[@name='user']/@class";XPathExpression compiledExpression = xPath.compile(expression);System.out.println(compiledExpression.evaluate(source));}
???????? 再次运行main()方法将重新得到前面相同的输入结果。
?