Webservice中服务器端直接操作SOAP的XML内容
通常情况下,在JAX-WS2.0中是利用JAXB将传入的SOAP XML消息转换成JAVA的object,然后调用对应porttype的JAVA类的相应的方法,在完成调用后,再通过JAXB将返回参数转成SOAP XML.
JAX-WS还提供了另一种方法,让我们可以直接操作SOAP XML,通过让对应porttype的JAVA类实现 Provider<Source>接口,当服务器端收到SOAP消息后,会调用 Source invoke(Source payload) 方法,如果需要直接对XML进行操作,不想利用JAXB来做对象和XML的转换,可以用这种机制.
例子:(用CXF发布web service)参照http://blog.csdn.net/kkdelta/archive/2009/03/12/3984312.aspx了解CXF发布的步骤.
1,JAVA 类
package com.cxfwsp.test;
import java.io.StringReader;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.Provider;
import javax.xml.ws.Service;
import javax.xml.ws.ServiceMode;
import javax.xml.ws.WebServiceProvider;
@WebServiceProvider(serviceName = "TestWSProviderService", portName = "TestWSProviderPort", targetNamespace = "http://test.cxfwsp.com/", wsdlLocation = "wsdl/prjCXFWSP.wsdl")
@ServiceMode(Service.Mode.PAYLOAD)
public class TestWSProvider implements Provider<Source> {
public Source invoke(Source payload) {
//System.out.println(payload);
//DOMSource domsrc = (DOMSource)payload;
try{
Transformer tFormer = TransformerFactory.newInstance().newTransformer();
Result result = new StreamResult(System.out);
tFormer.transform(payload, r
相关文档:
用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。
已知有一个XML文件(bookstore.xml)如下:
<?xml version="1.0" encoding="gb2312"?>
<bookstore>
<book genre="fantasy" ISBN="2-3631-4">
<title>Oberon's Legacy</title>
&n ......
2010-05-19
七、转换XML
l 可扩展样式表语言(XSL),被定义成了一种表示样式表的语言。是管理怎样从格式A转换一个文档到格式B的规范语言。该语言组件用于管理转换结构中的处理和身份验证
n XSL是一种用来转换XML文档的语言。
n XSL是一个用来指定XML文档格式的词汇库。
l XSL和树形描述:这 ......
ID.xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="ID.css"?>
<bookdetail>
<book class="A" id="B1">
<author>曹雪芹</author>
<title>红楼梦</title>
<price>60.00</price>
</book>
<book class="A ......
xmlpost by HttpWebRequest:
protected string PostXmlToURL(string url,string data)
{
HttpWebRequest hwr = (HttpWebRequest)HttpWebRequest.Create(url);
hwr.Method = "POST";
Stream stream = hwr.GetRequestStream();
StreamWri ......
XML文件由于其扩展性与兼容性的优点,被广泛用作软件和系统的配置文件。这里简要介绍一下QT下如何来解析XML文件。
源代码:
xml_reader.h
#ifndef XML_READER_H
#define XML_READER_H
#include <QtCore>
//#include <QtGui>
class xml_reader : public QXmlStreamReader
{
//Q_OBJECT
public:
......