[英]Xstream isn't attaching an alias for the field
我已經這樣定義了xstream:
public static final String listToXMLTree(List<?> list,
Class<?> domainClass, Converter evtConverter ) {
String xml = "";
StringBuffer buff = new StringBuffer(1000);
buff.append("<?xml version='1.0' encoding='iso-8859-1'?>");
XStream xstream = new XStream(new DomDriver());
if (list != null && list.size() > 0) {
xstream.registerConverter(evtConverter);
xstream.alias("rows", List.class);
xstream.alias("row", Event.class );
xstream.aliasField("child", Event.class, "hasChildren");
xml = xstream.toXML(list);
} else {
buff.append("<rows/>");
}
xml = buff.append(xml).toString();
System.out.println(xml);
return xml;
}
但是彈出的xml對於“ hasChildren”變量沒有任何別名-為什么呢? xml看起來像這樣:
<?xml version='1.0' encoding='iso-8859-1'?>
<rows>
<row id="Puerto Rico692014-04-30 00:00:00.02014-07-29 00:00:00.0" xmlkids="1">
<cell></cell>
<cell>Puerto Rico</cell>
<cell>103415</cell>
</row>
</rows>
編輯
這是我擁有的事件類-(另外,我嘗試使用XStream別名並刪除了上面手動創建它們的代碼,但是它也不起作用):
public class Event
{
// Event parameters
private String region;
private boolean hasChildren;
public boolean isHasChildren() {
return hasChildren;
}
public void setHasChildren(boolean hasChildren) {
this.hasChildren = hasChildren;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
}
evtConverter
是一個轉換器,它將Xstream吐出的xml映射到DHTMLx網格上。
謝謝
信用為這個答案去頂點 -需要才能正常工作的別名后加入轉爐-其實我重構我的答案,並有對象利用了的西河注釋 ,而不是在方法定義它們。 這是代碼:
/**
* Method to convert list objects to XML using XStream API.
* <p>
*
* @param list
* @param domainClass
* @param columnIds
*/
public static final String listToXML(List<?> list, Class<?> domainClass,
Converter converter) {
String xml = "";
StringBuffer buff = new StringBuffer(1000);
buff.append("<?xml version='1.0' encoding='UTF-8'?>");
XStream xstream = new XStream(new DomDriver());
if (list != null && list.size() > 0) {
xstream.alias("rows", List.class);
xstream.processAnnotations(domainClass);
xstream.registerConverter(converter);
xml = xstream.toXML(list);
} else {
buff.append("<rows/>");
}
xml = buff.append(xml).toString();
return xml;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.