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条)

报告相同问题?

悬赏问题

  • ¥15 请各位看看我写的属于什么算法,或者有更正确的写法?
  • ¥15 html5 qrcode 扫描器
  • ¥15 爬取网页信息并保存需要完整代码
  • ¥15 一分十不等功分器阻设计问题,请问这个56Ω怎么得到的
  • ¥15 (标签-matlab)
  • ¥100 求看看这个数学建模,有偿
  • ¥15 深度学习目标检测现在框架加注意力的创新可以投几区?
  • ¥15 PdfiumViewer pdf转图片
  • ¥15 利用Java连接API接口总是出问题
  • ¥15 请教一个关于镜头标定,棋盘格格子大小的问题(畸变测试)