?? nrssdataextractor.java
字號:
/** Copyright (c) 2001 Sun Microsystems, Inc. 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. Redistributions of source code must retain the above copyright* notice, this list of conditions and the following disclaimer.** 2. 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.** 3. The end-user documentation included with the redistribution,* if any, must include the following acknowledgment:* "This product includes software developed by the* Sun Microsystems, Inc. for Project JXTA."* Alternately, this acknowledgment may appear in the software itself,* if and wherever such third-party acknowledgments normally appear.** 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA"* must not be used to endorse or promote products derived from this* software without prior written permission. For written* permission, please contact Project JXTA at http://www.jxta.org.** 5. Products derived from this software may not be called "JXTA",* nor may "JXTA" appear in their name, without prior written* permission of Sun.** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR* ITS 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 Project JXTA. For more* information on Project JXTA, please see* <http://www.jxta.org/>.** This license is based on the BSD license adopted by the Apache Foundation.** $Id: NRSSDataExtractor.java,v 1.2 2006/07/13 05:26:36 nano Exp $*///package net.java.netbeams.protocol;package net.jxta.myjxta.misc.beam;import org.xml.sax.InputSource;import javax.xml.parsers.DocumentBuilderFactory;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;/** * @author dave */public class NRSSDataExtractor { /** * Creates a new instance of NRSSDataExtractor */ public NRSSDataExtractor() { } public static String getValueFromString(String input, String expression) { String returnValue = new String(); //see http://www.docjar.com/html/api/java/io/Reader.java.html java.io.StringReader sr = new java.io.StringReader(input); //see http://www.docjar.com/html/api/org/xml/sax/InputSource.java.html org.xml.sax.InputSource inputSource = new org.xml.sax.InputSource(sr); try { // Example used // http://www.onjava.com/pub/a/onjava/2005/01/12/xpath.html// xxx: gonzo, 1.5 goodness/* XPathFactory factory2=XPathFactory.newInstance(); XPath xPath = factory2.newXPath(); NamespaceContext namespaceContext=new NamespaceContextImpl(NameSpaceName, NameSpaceURL); xPath.setNamespaceContext(namespaceContext);*/ // passed //XPathExpression xPathExpression = xPath.compile("/rss/channel/item/description/nrss:metadata/nrss:arg[@n='size']"); // passed //XPathExpression xPathExpression = xPath.compile("/rss/channel/item/description/nrss:data/nrss:content/nrss:argArray[@n='current']"); // passed //XPathExpression xPathExpression = xPath.compile("/rss/channel/title"); //String expression = "/rss/channel/item/description/nrss:data/nrss:content/nrss:argArray[@n='current']"; //xPathExpression.evaluate(inputSource, returnType) // See http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/package-summary.html// xxx: gonzo, 1.5 goodness/* XPathExpression xPathExpression = xPath.compile(expression); returnValue = xPathExpression.evaluate(inputSource);*/ returnValue = null; // String returnValue = xPath.evaluate(expression, inputSource); //is.close(); //System.out.println("value = "+value.toString()); } catch (Exception e) { e.printStackTrace(); } return returnValue; } // Example Used: http://www.idevelopment.info/data/Programming/java/xml/DOMExample.java public static String getValueFromInputStream(InputStream is, String expression) { String returnValue = new String(); try { // Example used // http://www.onjava.com/pub/a/onjava/2005/01/12/xpath.html// xxx: gonzo, 1.5 goodness/* XPathFactory factory2=XPathFactory.newInstance(); XPath xPath = factory2.newXPath(); NamespaceContext namespaceContext=new NamespaceContextImpl(NameSpaceName, NameSpaceURL); xPath.setNamespaceContext(namespaceContext);*/ // passed //XPathExpression xPathExpression = xPath.compile("/rss/channel/item/description/nrss:metadata/nrss:arg[@n='size']"); // passed //XPathExpression xPathExpression = xPath.compile("/rss/channel/item/description/nrss:data/nrss:content/nrss:argArray[@n='current']"); // passed //XPathExpression xPathExpression = xPath.compile("/rss/channel/title"); InputSource inputSource = new InputSource(is); //String expression = "/rss/channel/item/description/nrss:data/nrss:content/nrss:argArray[@n='current']"; //xPathExpression.evaluate(inputSource, returnType) // See http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/package-summary.html// xxx: gonzo, 1.5 goodness/* XPathExpression xPathExpression = xPath.compile(expression); returnValue = xPathExpression.evaluate(inputSource);*/ returnValue = null; // String returnValue = xPath.evaluate(expression, inputSource); is.close(); //System.out.println("value = "+value.toString()); } catch (Exception e) { e.printStackTrace(); } return returnValue; } public static String getValueFromURL(String nrssURL, String expression) { // get the NRSS DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { // Example used // http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html URL u = new URL(nrssURL); URLConnection c = u.openConnection(); InputStream is = c.getInputStream(); return getValueFromInputStream(is, expression); } catch (IOException e) { e.printStackTrace(); // log.severe(e.toString()); } catch (Exception ea) { // log.severe(ea.toString()); ea.printStackTrace(); } return null; } public static void main(String[] args) { String url = "http://fuzzy.sfbay.sun.com/~tl109030/samplenrss02.xml"; String expression = "/rss/channel/item/description/nrss:data/nrss:content/nrss:argArray[@n='current']/nrss:arg[@n='value']"; //String expression = "/rss/channel/title"; try { String result = getValueFromURL(url, expression); System.out.println("Result: " + result); } catch (Exception e) { e.printStackTrace(); } try { // Example used // http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html URL u = new URL(url); URLConnection c = u.openConnection(); InputStream is = c.getInputStream(); System.out.println("getVAlueFromInputStream: " + getValueFromInputStream(is, expression)); } catch (IOException e) { e.printStackTrace(); // log.severe(e.toString()); } catch (Exception ea) { // log.severe(ea.toString()); ea.printStackTrace(); }// System.err.println("Usage: java NRSS2Array <url> <expression>"); // add interface that handles InputStream }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -