📄 stockclient2.java
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */package samples.databinding;import org.apache.axiom.om.OMAbstractFactory;import org.apache.axiom.om.OMDataSource;import org.apache.axiom.om.OMElement;import org.apache.axiom.om.OMFactory;import org.apache.axiom.om.OMOutputFormat;import org.apache.axiom.om.impl.builder.SAXOMBuilder;import org.jdom.Document;import org.jdom.Element;import org.jdom.JDOMException;import org.jdom.input.StAXBuilder;import org.jdom.output.SAXOutputter;import org.jdom.output.StAXOutputter;import org.jdom.output.XMLOutputter;import org.jdom.xpath.XPath;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.XMLStreamWriter;import java.io.IOException;import java.io.OutputStream;import java.io.Writer;public final class StockClient2 { public static void main(String[] args) throws Exception { if (args.length != 2) { System.err.println("Usage: StockClient <url> <symbol>"); return; } final String url = args[0]; final String symbol = args[1]; System.out.println(); System.out.println("Getting Stock Quote for " + symbol); StockQuoteServiceStub stub = new StockQuoteServiceStub(url); stub._getServiceClient().getOptions().setAction("getStockQuote"); Element element1 = new Element( "getStockQuote", "nsl", "http://w3.ibm.com/schemas/services/2002/11/15/stockquote"); Element element2 = new Element("symbol"); element2.addContent(symbol); element1.addContent(element2); OMFactory factory = OMAbstractFactory.getOMFactory(); org.apache.axiom.om.OMDataSource src = new JDOMDataSource(element1); org.apache.axiom.om.OMNamespace appns = factory.createOMNamespace("http://w3.ibm.com/schemas/services/2002/11/15/stockquote", "ns1"); OMElement child = factory.createOMElement(src, "getStockQuote", appns); OMElement response = stub.getStockQuote(child); StAXBuilder builder = new StAXBuilder(); Document doc = builder.build(response.getXMLStreamReader()); XPath path = XPath.newInstance("//price"); Element price = (Element) path.selectSingleNode(doc.getRootElement()); System.out.println("Price = " + price.getText()); } private static class JDOMDataSource implements OMDataSource { private final Element data; private JDOMDataSource(Element data) { this.data = data; } public void serialize(OutputStream output, OMOutputFormat format) throws XMLStreamException { try { XMLOutputter outputter = new XMLOutputter(); outputter.output(data, output); } catch (IOException e) { throw new XMLStreamException(e); } } public void serialize(Writer writer, OMOutputFormat format) throws XMLStreamException { try { XMLOutputter outputter = new XMLOutputter(); outputter.output(data, writer); } catch (IOException e) { throw new XMLStreamException(e); } } public void serialize(XMLStreamWriter xmlWriter) throws XMLStreamException { StAXOutputter outputter = new StAXOutputter(xmlWriter); try { outputter.outputFragment(data); } catch (JDOMException e) { throw new XMLStreamException(e); } } public XMLStreamReader getReader() throws XMLStreamException { SAXOMBuilder builder = new SAXOMBuilder(); SAXOutputter outputter = new SAXOutputter(); outputter.setContentHandler(builder); outputter.setEntityResolver(builder); outputter.setDTDHandler(builder); outputter.setEntityResolver(builder); return builder.getRootElement().getXMLStreamReader(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -