java - 如何循环Arraylist<String>并添加到子节点以及将子节点添加到父节点

标签 java xml

我有一个数组列表,需要在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/

相关文章:

javascript - 如何解析 xml 并在 javascript 中从中提取 xslt 元素

c# - 如何从 XML 文件中的位置获取文本?

java - 如何检查警报对话框的可见性?

java - JPanel 和 JButton,无法弄清楚如何布局 2 个简单按钮

java - 这种情况需要同步吗

php - 在浏览器中将 xml 作为字符串打印,而不是使用 asXml() 方法

java - 单击按钮时创建新的 FrameLayout - Android

java - 如何使用Maven处理跨平台(Windows + Linux)Java Native Interface项目?

java - RestEasy:如果字符串有空格,@PathParam 返回第一个单词

xml - XSDs - 如何拥有一个可能为负整数也可以为空的整数