⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jaxenhandlertest.java

📁 XML的解析、编译、查询等技术的JAVA源代码。
💻 JAVA
字号:
/* * $Header$ * $Revision$ * $Date$ * * ==================================================================== * * Copyright 2000-2002 bob mcwhirter & James Strachan. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: *  *   * Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. *  *   * Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. *  *   * Neither the name of the Jaxen Project nor the names of its *     contributors may be used to endorse or promote products derived  *     from this software without specific prior written permission. *  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * ==================================================================== * This software consists of voluntary contributions made by many  * individuals on behalf of the Jaxen Project and was originally  * created by bob mcwhirter <bob@werken.com> and  * James Strachan <jstrachan@apache.org>.  For more information on the  * Jaxen Project, please see <http://www.jaxen.org/>. *  * $Id$ */package org.jaxen.test;import junit.framework.TestCase;import org.jaxen.JaxenHandler;import org.jaxen.expr.DefaultXPathFactory;import org.jaxen.expr.XPathExpr;import org.jaxen.saxpath.SAXPathException;import org.jaxen.saxpath.XPathReader;import org.jaxen.saxpath.XPathSyntaxException;import org.jaxen.saxpath.helpers.XPathReaderFactory;public class JaxenHandlerTest extends TestCase{        private String[] paths = {        "foo[.='bar']",        "foo[.!='bar']",        "/",        "*",        "//foo",        "/*",        "/.",        "/foo[/bar[/baz]]",        "/foo/bar/baz[(1 or 2) + 3 * 4 + 8 and 9]",        "/foo/bar/baz",        ".[1]",        "self::node()",        ".",        "count(/)",        "foo[1]",        "/baz[(1 or 2) + 3 * 4 + 8 and 9]",        "foo/bar[/baz[(1 or 2) - 3 mod 4 + 8 and 9 div 8]]",        "foo/bar/yeah:baz[a/b/c and toast]",        "/foo/bar[../x='123']",        "/foo[@bar='1234']",        "foo|bar",        "/foo|/bar[@id='1234']",        "count(//author/attribute::*)",        "$author",         "10 + $foo",        "10 + (count(descendant::author) * 5)",        "10 + count(descendant::author) * 5",        "2 + (2 * 5)",        "sum(count(//author), 5)",        "sum(count(//author),count(//author/attribute::*))",        "12 + sum(count(//author),count(//author/attribute::*)) div 2",        "text()[.='foo']",        "/*/*[@id='123']",        "/child::node()/child::node()[@id='_13563275']",        "$foo:bar",        "//foo:bar",        "/foo/bar[@a='1' and @c!='2']",    };    private String[] bogusPaths = { "//:p" ,               // this path is bogus because of a trailing /        "/foo/bar/",                // This path is bogus because '/' is not division, but        // rather just the step separator.        "12 + sum(count(//author),count(//author/attribute::*)) / 2",        "id()/2",        "+"    };        public JaxenHandlerTest(String name)    {        super( name );    }    public void testValidPaths()    {                    String path = null;        try        {            // XXX Jiffie solution?            XPathReader reader = XPathReaderFactory.createReader();            JaxenHandler handler = new JaxenHandler();            handler.setXPathFactory( new DefaultXPathFactory() );            reader.setXPathHandler( handler );            for ( int i = 0; i < paths.length; i++ ) {                path = paths[i];                reader.parse(path);                handler.getXPathExpr(false);                handler.getXPathExpr();            }        }        catch (Exception e)        {            e.printStackTrace();            fail( path + " -> " + e.getMessage() );        }    }    public void testBogusPaths() throws SAXPathException    {        XPathReader reader = XPathReaderFactory.createReader();        JaxenHandler handler = new JaxenHandler();        handler.setXPathFactory( new DefaultXPathFactory() );        reader.setXPathHandler( handler );                for ( int i = 0; i < bogusPaths.length; i++ ) {            String path = bogusPaths[i];            try            {                                    reader.parse(path);                XPathExpr xpath = handler.getXPathExpr(false);                fail( "Parsed bogus path as: " + xpath );            }            catch (XPathSyntaxException e)            {            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -