代码之家  ›  专栏  ›  技术社区  ›  topskip

XML编码:混合属性和元素

  •  0
  • topskip  · 技术社区  · 6 年前

    我有一个关于编组go xml的问题:我得到了:

    <root abc="">
      <element></element>
    </root>
    

    但我想要这个:

    <root>
      <element abc=""></element>
    </root>
    

    (属性 abc 在子元素中)。

    这(很容易)可能吗?

    我的代码:

    package main
    
    import (
        "encoding/xml"
        "fmt"
        "os"
    )
    
    type foo struct {
        XMLName xml.Name `xml:"root"`
        Abc     string   `xml:"abc,attr"`
        Element string   `xml:"element"`
    }
    
    func main() {
        f := foo{}
        a, err := xml.MarshalIndent(f, "", "  ")
        if err != nil {
            fmt.Println(err)
            os.Exit(0)
        }
        fmt.Println(string(a))
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   JieErLiu    6 年前

    您可以将结构定义为:

    type foo struct {
        XMLName xml.Name `xml:"root"`
        Element struct{
            xml.Name `xml:"element"`
            Abc     string   `xml:"abc,attr"`
        }  
    }