dsb0003795 2018-04-04 08:22
浏览 277
已采纳

使用Golang中的encoding / xml包制作soap xml

I want to make a sample xml that repeats a field depending on the value of the slice. But the final result is not as desired.

XML that I want to create

        recipients = ["num1","num2",...]

        //Start XML
        .
        .
        .
        <SendDetail>
            <item><Mobile>num1</Mobile></item>
            <item><Mobile>num2</Mobile></item>
            ...
        </SendDetail>  

The number of repetitions of depends on the length of the slice of recipients and its values.

My Code

        type item struct {
            Mobile  []string `xml:"Mobile"`
        }
        type sendDetail struct {
            Item *[]item `xml:"item"`
        }   


        SendDetail: &sendDetail{
                Item:&[]item{
                    item{
                        Mobile:recipients,
                    },
                },
            },

Result

      <SendDetail>
        <item>
          <Mobile>num1</Mobile>
          <Mobile>num2</Mobile>
        </item>
      </SendDetail>

Any pointers will be appreciated.

  • 写回答

2条回答 默认 最新

  • dongzhong1891 2018-04-04 08:40
    关注

    In your XML inside an <item> there is only a single <Mobile> tag. You don't want to repeat the <Mobile> tag but the <item> tag. So in Go you have to create a new Item for each number.

    Model it like this:

    type Item struct {
        Mobile string `xml:"Mobile"`
    }
    
    type SendDetail struct {
        Items []*Item `xml:"item"`
    }
    

    Example using the model:

    recipients := []string{"num1", "num2"}
    
    sd := &SendDetail{}
    for _, recipient := range recipients {
        sd.Items = append(sd.Items, &Item{Mobile: recipient})
    }
    
    data, err := xml.MarshalIndent(sd, "", "  ")
    if err != nil {
        panic(err)
    }
    
    fmt.Println(string(data))
    

    Output (try it on the Go Playground):

    <SendDetail>
      <item>
        <Mobile>num1</Mobile>
      </item>
      <item>
        <Mobile>num2</Mobile>
      </item>
    </SendDetail>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况