org.xmlpull.xis5.samples.XisXPathDemo Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xpp5 Show documentation
Show all versions of xpp5 Show documentation
XML Pull parser library developed by Extreme Computing Lab, Indian University
package org.xmlpull.xis5.samples;
/* -*- c-basic-offset: 4; indent-tabs-mode: nil; -*- //------100-columns-wide------>|*/
/*
* Copyright (c) 2002-2004 Extreme! Lab, Indiana University. All rights reserved.
*
* This software is open source. See the bottom of this file for the licence.
*
* $Id: XisXPathDemo.java,v 1.1 2005/05/16 23:59:17 aslom Exp $
*/
import java.util.Iterator;
import org.xmlpull.infoset.XmlBuilderException;
import org.xmlpull.infoset.XmlDocument;
import org.xmlpull.infoset.XmlInfosetBuilder;
import org.xmlpull.infoset.xpath.XisXPath;
import org.xmlpull.infoset.xpath.jaxen.XPathSyntaxException;
/**
* Simple demo of XPath support in XIS5.
*
* @author Aleksander Slominski
*
* @version $Revision: 1.1 $
*/
public class XisXPathDemo
{
public static void main(String[] args)
{
String locationOrXmlString = "Text ";
String xpathExpr = "//";
if ( args.length != 2 ) {
System.err.println("usage: "+XisXPathDemo.class.getName()+" ");
//System.exit( 1 );
}
if(args.length > 0) {
locationOrXmlString = args[0];
}
if(args.length > 1) {
xpathExpr = args[1];
}
int pos = locationOrXmlString.indexOf("://");
boolean useUrl = pos >= 0 && pos < 6; //simple heuristic to find "http://" and similiar
try {
XmlInfosetBuilder builder = XmlInfosetBuilder.newInstance();
System.out.println("Evaluating XPath '"+xpathExpr+"' against '" + locationOrXmlString
+"'"+(useUrl ? " URL" : "") );
XmlDocument doc = useUrl ? builder.parseLocation( locationOrXmlString )
: builder.parseString( locationOrXmlString );
XisXPath xpath = new XisXPath( xpathExpr );
Iterator resultsIter = xpath.selectNodes( doc ).iterator();
System.out.println("Results:" );
while ( resultsIter.hasNext() ) {
Object infosetItem = resultsIter.next();
System.out.println("----------------------------------"); //+ infosetItem.getClass());
System.out.println(builder.serializeToString(infosetItem)); //what about attributes, namespaces????
}
System.out.println("----------------------------------");
} catch (XPathSyntaxException e) {
System.err.println( e.getMultilineMessage() );
} catch (XmlBuilderException e) {
e.printStackTrace();
}
}
}
/*
* Indiana University Extreme! Lab Software License, Version 1.2
*
* Copyright (c) 2002-2004 The Trustees of Indiana University.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* 1) All redistributions of source code must retain the above
* copyright notice, the list of authors in the original source
* code, this list of conditions and the disclaimer listed in this
* license;
*
* 2) All redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the disclaimer
* listed in this license in the documentation and/or other
* materials provided with the distribution;
*
* 3) Any documentation included with all redistributions must include
* the following acknowledgement:
*
* "This product includes software developed by the Indiana
* University Extreme! Lab. For further information please visit
* http://www.extreme.indiana.edu/"
*
* Alternatively, this acknowledgment may appear in the software
* itself, and wherever such third-party acknowledgments normally
* appear.
*
* 4) The name "Indiana University" or "Indiana University
* Extreme! Lab" shall not be used to endorse or promote
* products derived from this software without prior written
* permission from Indiana University. For written permission,
* please contact http://www.extreme.indiana.edu/.
*
* 5) Products derived from this software may not use "Indiana
* University" name nor may "Indiana University" appear in their name,
* without prior written permission of the Indiana University.
*
* Indiana University provides no reassurances that the source code
* provided does not infringe the patent or any other intellectual
* property rights of any other entity. Indiana University disclaims any
* liability to any recipient for claims brought by any other entity
* based on infringement of intellectual property rights or otherwise.
*
* LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH
* NO WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA
* UNIVERSITY GIVES NO WARRANTIES AND MAKES NO REPRESENTATION THAT
* SOFTWARE IS FREE OF INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR
* OTHER PROPRIETARY RIGHTS. INDIANA UNIVERSITY MAKES NO WARRANTIES THAT
* SOFTWARE IS FREE FROM "BUGS", "VIRUSES", "TROJAN HORSES", "TRAP
* DOORS", "WORMS", OR OTHER HARMFUL CODE. LICENSEE ASSUMES THE ENTIRE
* RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR ASSOCIATED MATERIALS,
* AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION GENERATED USING
* SOFTWARE.
*/