Как упорядочить XML - PullRequest
       27

Как упорядочить XML

0 голосов
/ 17 сентября 2018

У меня есть две структуры для объединения в XML

//Accounts ...
type Accounts struct {
    XMLName     xml.Name `xml:"account"`
    AccNumber   string   `xml:"iban"`

}

//Accounts ...
type AccountsList struct {
    XMLName    xml.Name   `xml:"response"`
    ResultCode string     `xml:"resultCode"`
    Accounts   []Accounts `xml:"result"`
}

Я получаю следующую структуру XML:

<response>
    <resultCode>...</resultCode>
    <account>
        <iban>...</iban>
    </account>
    <account>
        <iban>...</iban>
    </account>
</response>

Но мне также нужен тег <result>, поэтому мне нужен следующий xml:

<response>
    <resultCode>...</resultCode>
    <result>
        <account>
            <iban>...</iban>
        </account>
        <account>
            <iban>...</iban>
        </account>
    <result>  
</response>

Почему Golang XML marshaller игнорирует эту вещь xml:"result" в AccountsList структуре? Можно ли получить желаемый результат без использования третьей структуры ?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы можете изменить имя тега поля с result на result>account:

type AccountsList struct {
    XMLName    xml.Name   `xml:"response"`
    ResultCode string     `xml:"resultCode"`
    Accounts   []Accounts `xml:"result>account"`
}

Это обернет ваш accounts фрагмент тегом result.

См .: https://play.golang.org/p/E2oJeO81wKh

0 голосов
/ 17 сентября 2018

Пожалуйста, ознакомьтесь с приведенным ниже кодом, я протестировал его на игровой площадке, и он не дает мне никакой ошибки.

func main() {
var al AccountsList
output, err := xml.MarshalIndent(al, "  ", "    ")
    fmt.Println("Hello, playground", err)
    fmt.Println(string(output))

}

Вы также можете проверить это, используя эту ссылку .

...