服务器在处理请求时遇到错误。异常消息“无法反序列化根名称为“信封”和根命名空间的XML正文”http://schemas.xmlsoap.org/soap/envelope/(对于操作“通知”和合同(“IPush”)http://www.ffffff.org/uuu/2003/05/beta“))使用DataContractSerializer。确保将与XML对应的类型添加到服务的已知类型集合中。有关详细信息,请参阅服务器日志。异常堆栈跟踪
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseId xmlns="http://www.mhotel.com/"/>
</soap:Header>
<soap:Body>
<ns3:NotifRQ Status="yes" Token="ggggg" xmlns:ns2="http://www.yyyyyy.com/" xmlns:ns3="http://www.ffffff.org/uuu/">
</ns3:NotifRQ>
[DataContract(Namespace = "http://www.ffffff.org/uuu/")]
public class HotelResNotifRQ
{
public HotelResNotifRQ()
{
NotifRQ = new NotifRQ();
}
[DataMember(Name = "NotifRQ")]
public NotifRQ NotifRQ{ get; set; }
}
[DataContract(Namespace = "http://www.ffffff.org/uuu/")]
public class NotifRQ
{
[DataMember(Name = "Status")]
public string Status { get; set; }
[DataMember(Name = "Token")]
public string Token { get; set; }
}
您必须将类型<code>NotifRQ</code>添加到<code>HotelResNotifRQ</code>的datacontract的已知类型中。
引用自MSDN:
类允许您提前指定在反序列化过程中应包括以供考虑的类型。
因此,请考虑执行以下操作:
[DataContract(Namespace = "http://www.ffffff.org/uuu/")]
[KnownType(typeof(NotifRQ))] // add NotifRQ as a known type
public class HotelResNotifRQ
{
public HotelResNotifRQ()
{
NotifRQ = new NotifRQ();
}
...
XML信封命名空间的正确URI是什么。我见过很多,例如。”http://www.w3.org/2001/12/soap-envelope“,”http://www.w3.org/2001/06/soap-envelope“,”http://www.w3.org/2003/05/soap-envelope“,”http://schemas.xmlsoap.org/soap/envelope/“。请告
我的代码生成的名称空间有问题。我想要的是以下XML: 我得到的是以下XML: 主要区别是: 目前我正在做的是替换1中序列化字符串中的值 这是我正在使用的代码,我如何更改GetNameSpace()来做我在第1点中需要的事情
我想用Spring靴的方式来做这件事。
我想让JAXB列表到xml,其中命名空间只出现在根元素中,而不是在任何其他元素中: 我已经尝试了package level @XmlSchema,但是我一定是做错了什么,因为没有显示任何东西。 这是我的根元素类: 我还有以下包-info.java:
供应商提供的XML如下: 请注意,没有声明,供应商也没有提供模式。这不能更改,供应商将来会继续这样发布XML。 为了生成JAXB绑定,我创建了如下模式: 请注意,我已经声明了一个或多或少有意义的命名空间(“http://acme.com/schema”),以便它可以用于元素引用等。XJC 生成以下: 然后,我尝试解组XML文档: 我得到的例外是: 显然,这是因为XML元素属于一个空的名称空间,而J
问题内容: 如果已删除肥皂信封,JAXB只能解组XML。但是,我要解组的SOAP响应在soap信封上有其名称空间声明。如果我删除肥皂信封,则名称空间声明也将被删除。因此,标签的前缀将不涉及任何前缀。这将导致JAXB引发错误。如果在SOAP信封上声明了名称空间,如何使用JAXB解组SOAP响应? 我需要解组的XML的类似示例如下: 如果我取下肥皂信封,会发生以下情况: 如果删除了肥皂信封,则名称空间