我有一个数组列表,需要在xml的子节点中添加列表,并将子节点添加到父节点。我写的下面的代码是正确的吗?
public static String generateXMLData(CouponDetails couponDetails){
List<String> list = couponDetails.getCOUPON();
String rtrnString = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"
+"<Result_Code>"+couponDetails.getSTATUS_CODE()
+"<Coupons>"+list+"</Coupons>"
+"</Result_Code>"
;
return rtrnString;
}
@XmlRootElement
public class CouponDetails {
private String STATUS_CODE;
private List<String> COUPON;
public String getSTATUS_CODE() {
if(STATUS_CODE != null){
return STATUS_CODE;
}else{
return "";
}
}
public void setSTATUS_CODE(String sTATUS_CODE) {
STATUS_CODE = sTATUS_CODE;
}
public List<String> getCOUPON() {
return COUPON;
}
public void setCOUPON(List<String> cOUPON) {
COUPON = cOUPON;
}
}
上面的“private List COUPON;”是包含xml的字符串。
最佳答案
看你想要什么。在行
+"<Coupons>"+list+"</Coupons>"
您将调用list.toString()
所以你会得到类似的东西:
[优惠券1,优惠券2,优惠券3]
您可能想将所有优惠券隐藏在 <Coupon></Coupon>
中标签。并且您需要关闭</Result_Code>
标记在正确的位置。
所以你需要做类似的事情:
+"<Coupons>"+list.stream().map((s) -> "<Coupon>" + s + "</Coupon>").collect(Collectors.joining()) +"</Coupons>"
这不好,字符串连接的成本很高,但这可能是可以修复代码的最小更改。
更好的解决方案是使用 StringBuiler,例如:
public static String generateXMLData(CouponDetails couponDetails) {
StringBuilder sb = new StringBuilder();
sb.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>")
.append("<Result_Code>")
.append(couponDetails.getSTATUS_CODE())
.append("</Result_Code>")
.append("<Coupons>");
for (String coupons : couponDetails.getCOUPON()) {
sb.append("<Coupon>")
.append(coupons)
.append("</Coupon>");
}
sb.append("</Coupons>");
return sb.toString();
}
关于java - 如何循环Arraylist<String>并添加到子节点以及将子节点添加到父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816350/