簡體   English   中英

Xstream沒有為該字段附加別名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM