我通过axis手工创建SOAP消息的时候,发现每一个节点都带 xmlns=""  这么一个东西在里面,有谁有什么办法把这个去掉吗?是不是我的程序有什么问题??这样发送到服务端会不会有什么不兼容的问题呢??大虾们请帮忙哈附代码:package soaptest.client;import java.io.FileReader;
import java.util.*;
import javax.xml.soap.*;
import org.jdom.*;
import org.jdom.input.*;
import javax.xml.messaging.*;
public class XmlToSoap {
public static void createSoapMessage(){
try{

//创建连接
SOAPConnectionFactory myfactory = SOAPConnectionFactory.newInstance();
SOAPConnection con = myfactory.createConnection();
//创建消息
MessageFactory msgfactory = MessageFactory.newInstance();
SOAPMessage message = msgfactory.createMessage();
//得到消息对象结构
SOAPPart mypart = message.getSOAPPart();
//得到信封
SOAPEnvelope myenvelope = mypart.getEnvelope();
SOAPBody mybody = myenvelope.getBody();


FileReader fr = new FileReader("trans.xml");
SAXBuilder saxBuilder = new SAXBuilder();
Document document = saxBuilder.build(fr);
Element root = document.getRootElement();
System.out.println(root.getTextTrim());


//创建调用函数根节点
Name bodyName = myenvelope.createName("onLineUnderWrite", "m", "www.bocsoft.com.cn");
SOAPBodyElement bodyelement = mybody.addBodyElement(bodyName);
//调用XML处理,
createXmlToSoapbody(bodyelement,root,myenvelope);
//保存消息
message.saveChanges();



System.out.println("###################发送数据包#########################");
message.writeTo(System.out);
System.out.println("\n\n");


URLEndpoint endPt = new URLEndpoint("http://localhost:8080/Myweb/StudentInfoServlet");
SOAPMessage reply = con.call(message, endPt);
System.out.println("###################接收数据包#########################");
reply.writeTo(System.out);
System.out.println("\n\n");


con.close();

}catch(Exception e){
e.printStackTrace();
}
}


/**
 * 将orgelement格式的XML文件转换成soapelement消息列
 * @param soapelement
 * @param orgelement
 */
public static void createXmlToSoapbody(SOAPElement soapelement ,Element element,SOAPEnvelope myenvelope){
try{
//第一步:无论如何,当前这个传入的节点应该加到soapelement中去
Name curname = myenvelope.createName(element.getName());
SOAPElement curesoaplement = soapelement.addChildElement(curname);
//System.out.println("当前节点的名称:"+element.getName()+",值:"+element.getValue());
//第二步:增加完了需要对当前的节点进行判断,如果有子节点,则递归调用此函数,如果没有子结点则将当前节点的值取出来放入SOAPelement对象中

List list = element.getChildren();
//System.out.println(list.size());
if(list.size()>0){
//System.out.println("非叶子结点,需要进行递归");
//对list里面的element元素进行循环处理
for(int i=0;i<list.size();i++){
Element curelement = (Element)list.get(i);
//递归循环处理
createXmlToSoapbody(curesoaplement,curelement,myenvelope);
}
}else{
//System.out.println("叶子结点,直接赋值"+element.getValue());
curesoaplement.addTextNode(element.getValue());
}



}catch(Exception e){
e.printStackTrace();
}
}

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
createSoapMessage();

}}运行结果:
###################发送数据包#########################
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <m:onLineUnderWrite xmlns:m="www.bocsoft.com.cn">
   <trans xmlns="">
    <region_code xmlns="">111</region_code>
    <tran_code xmlns="">100036</tran_code>
    <bank_code xmlns="">9903</bank_code>
    <planlist xmlns="">
     <plan xmlns="">
      <plan_code xmlns="">001</plan_code>
      <unit xmlns="">10</unit>
     </plan>
     <plan xmlns="">
      <plan_code xmlns="">002</plan_code>
      <unit xmlns="">20</unit>
     </plan>
    </planlist>
   </trans>
  </m:onLineUnderWrite>
 </soapenv:Body>
</soapenv:Envelope>
###################接收数据包#########################
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <ResponseMessage xmlns="">Received Message,Thanks</ResponseMessage>
 </soapenv:Body>
</soapenv:Envelope>