课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > java教程 > XML编程:使用XPath对象查询xml文档
  • XML编程:使用XPath对象查询xml文档

    发布:昆明Java培训      来源:java教程      时间:2016-10-25

  • 昆明达内Java培训的老师使用XPath对象查询xml文档。

    XPath,一种为查询XML文档而设计的查询语言。XPath并不是Java语言,事实上XPath不是一种完整的编程语言。有很多东西用XPath表达不出来,甚至有些查询也无法表达。幸运的是,可以把XPath结合到Java程序中,这样就能发挥两者的优 了:Java做Java所擅长的,XPath做XPath所擅长的。Java程序执行XPath查询所需要的应用程序编程接口(API)还因形形色色的XPath引擎而各不相同。Xalan有一种API,Saxon使用另一种,其他引擎则使用其他的API。Java 5推出了javax.xml.xpath包, 供一个引擎和对象模型独立的XPath库。

    在Java中计算XPath表达式时,第二个参数指定需要的返回类型。有五种可能,都在javax.xml.xpath.XPathConstants类中命名了常量:

    XPathConstants.NODESET

    XPathConstants.BOOLEAN

    XPathConstants.NUMBER

    XPathConstants.STRING

    XPathConstants.NODE

    测试代码:

    1 public class XPathTest {

    2    /**

    3     *使用不带命名空间的XPath查询

    4     * @throws Exception

    5     */

    6    @Test

    7    public void testRetrieveOndNode() throws Exception{

    8        //获得xml文档的内存模型

    9        DocumentBuilder builder = DocumentBuilderFactory

    10        .newInstance().newDocumentBuilder();

    11        Document document = builder.parse(new File("src/main/resource/books.xml"));

    12        //创建XPathFactory对象

    13        XPathFactory xPathFactory = XPathFactory.newInstance();

    14        //获得XPath对象

    15        XPath xPath = xPathFactory.newXPath();

    16        //创建XPath表达式对象

    17        XPathExpression nodeExpr = xPath.compile("//book[1]");

    18        //执行XPath表达式,因为该表达式只能获得一个节点,所以用XPathConstants.NODE

    19        Element element = (Element) odeExpr.evaluate(document, XPathConstants.NODE);

    20        NodeList nodes = element.getChildNodes();

    21        for(int i=0;i<nodes.getLength();i++){

    22            Node node = nodes.item(i);

    23            //获得节点类型

    24            short nodeType = ode.getNodeType();

    25            if(nodeType==Node.ELEMENT_NODE){

    26                //获得节点文本,getNodeValue()无法获得节点的文本

    27                String text=node.getTextContent();

    28                System.out.println(node.getNodeName()+"--"+text);

    29            }

    30        }

    31    }

    32 }

    了解详情请登陆昆明达内Java培训官网(km.Java.tedu.cn)!

    推荐文章

上一篇:XML编程:使用JAXB进行java对象和xml格式之间的相互转换

下一篇:【达内Java培训】spring事务回滚

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56