Java 如何删除名称空间xmlns:xsi=";http://www.w3.org/2001/XMLSchema-instance"
我请求soapenv提供以下信息:Java 如何删除名称空间xmlns:xsi=";http://www.w3.org/2001/XMLSchema-instance",java,axis2,wsdl2java,Java,Axis2,Wsdl2java,我请求soapenv提供以下信息: <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"> 我想删除xmlns:xsi=”http://www.w3.org/2001/XMLSchema
<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">
我想删除xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“
我可以从我的服务存根上完成吗?
也许可以用一些属性设置org.apache.axis.client.Call对象。。。我不知道。如果您的问题在根目录中有xsi名称空间,那么扩展
SoapSerializationEnvelope
,然后重写方法:write
,比如:
@Override
public void write(XmlSerializer writer) throws IOException {
// writer.setPrefix("i", this.xsi);
writer.setPrefix("d", this.xsd);
writer.setPrefix("c", this.enc);
writer.setPrefix("v", this.env);
writer.startTag(this.env, "Envelope");
writer.startTag(this.env, "Header");
this.writeHeader(writer);
writer.endTag(this.env, "Header");
writer.startTag(this.env, "Body");
this.writeBody(writer);
writer.endTag(this.env, "Body");
writer.endTag(this.env, "Envelope");
}
为什么要删除名称空间?我真的不知道。开发该Web服务的程序员告诉我,该名称空间是错误的。如果
xsi
前缀没有在任何地方使用,那么该声明在那里不会有任何区别,但是如果XML中的任何元素使用xsi
前缀(例如在xsi:type
属性中),删除该命名空间声明将使其无效。我同意你的看法。该前缀未在xml中使用。但是,ws-programmer告诉我是否可以从请求xml中删除它。