我试图从传入的XML字符串生成一个对象。这是传入的有效负载,在将其从字节数组转换为对象后显示为java.string:
<?xml version="1.0" encoding="utf-8"?>
<EnumerationResults ContainerName="http://xxx.blob.core.windows.net/123/">
<Blobs>
<Blob>
<Name>stuff.csv</Name><Url>http://xxx.blob.core.windows.net/123/location.csv</Url><LastModified>Tue, 25 Aug 2015 18:19:58 GMT</LastModified><Etag>0x8D2AD79C8DFFFFF</Etag>
<Size>177</Size>
<ContentType>application/octet-stream</ContentType>
<ContentEncoding /><ContentLanguage />
</Blob>
</Blobs>
<NextMarker />
</EnumerationResults>"
我创建了一个类,我试图将上面的内容映射到:
public class EnumerationResults implements java.io.Serializable{
static final long serialVersionUID = 1;
private List<Blob> Blobs;
private String NextMarker;
private String ContainerName;
public EnumerationResults(){}
public List<Blob> getBlobs() {
return Blobs;
}
public void setBlobs(List<Blob> Blobs) {
this.Blobs = Blobs;
}
public String getNextMarker(){
return NextMarker;
}
public void setNextMarker(String NextMarker){
this.NextMarker = NextMarker;
}
}
使用Xml到Object转换器或XML到JAXB转换器,但得到了:
org.mule.api.transformer.TransformerMessagingException: EnumerationResults (com.thoughtworks.xstream.mapper.CannotResolveClassException)。信息 payload的类型为:String
有人能告诉我改变这种方法的最佳方法是什么? 我也试过JSON的对象,然后尝试将JSON映射到java类,但映射器通过错误。
感谢您的任何意见。
答案 0 :(得分:2)
最后使用以下流程步骤找到了解决此问题的方法:
我怀疑这是最好的解决方案,但它现在就做了。
答案 1 :(得分:1)
如果您使用mule 3.7使用数据编织进行转换,或者使用数据映射器
答案 2 :(得分:0)
如果您不想选择datamapper和dataweave(可能是您的社区版),请尝试将您的XML映射到JAXB Object。
Mule拥有您可以使用的JAXB Object transformer XML。您只需要创建JAXB Object类。
带有JAXB注释的示例类
@XmlRootElement(name = "person")
@XmlAccessorType(XmlAccessType.FIELD)
public class Person
{
private String name;
private String dob;
@XmlElementWrapper(name = "emailAddresses")
@XmlElement(name = "emailAddress")
private List<EmailAddress> emailAddresses;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getDob() { return dob; }
public void setDob(String dob) { this.dob = dob; }
public List<EmailAddress> getEmailAddresses() { return emailAddresses; }
public void setEmailAddresses(List<EmailAddress> emailAddresses) { this.emailAddresses = emailAddresses; }
}
您可以通过xjc命令从XSD创建JAXB类。