Golang:从另一个结构体获取XML属性

huangapple go评论95阅读模式
英文:

Golang: XML attributes from another struct

问题

你可以使用encoding/xml包来添加XML元素属性。首先,你需要定义一个结构体来表示XML元素,然后使用xml:"elementName,attr"标签来指定属性的名称和值。

以下是一个示例代码,演示如何从另一个结构体中添加XML元素属性:

package main

import (
	"encoding/xml"
	"fmt"
)

type Person struct {
	XMLName xml.Name `xml:"person"`
	Name    string   `xml:"name"`
	Age     int      `xml:"age"`
}

type Employee struct {
	XMLName xml.Name `xml:"employee"`
	Name    string   `xml:"name"`
	Age     int      `xml:"age"`
	Company string   `xml:"company,attr"`
}

func main() {
	person := Person{Name: "John Doe", Age: 30}
	employee := Employee{Name: "Jane Smith", Age: 35, Company: "ABC Corp"}

	// 将person的属性添加到employee中
	employee.Name = person.Name
	employee.Age = person.Age

	xmlData, err := xml.MarshalIndent(employee, "", "  ")
	if err != nil {
		fmt.Println("XML 编码错误:", err)
		return
	}

	fmt.Println(string(xmlData))
}

在上面的示例中,我们定义了两个结构体PersonEmployee,分别表示XML元素personemployeeEmployee结构体中有一个额外的属性Company,使用company,attr标签来指定该属性的名称和值。

main函数中,我们创建了一个person实例和一个employee实例。然后,我们将person的属性值赋给employee,最后使用xml.MarshalIndent函数将employee结构体编码为XML格式的数据,并打印输出。

你可以在这里查看示例代码的运行结果。

英文:

How can I add an XML element attribute from another struct?

For example: http://play.golang.org/p/E3K1KYnRH8

答案1

得分: 1

将具有共同属性的类型嵌入到其他类型中。

type AuthData struct {
    BuyerId  string `xml:"BuyerId,attr"`
    UserId   string `xml:"UserId,attr"`
    Language string `xml:"Language,attr"`
}

type MyRequest struct {
    XMLName  xml.Name `xml:"MyRequest"`
    AuthData // 嵌入。
    Action   struct{} `xml:"Action"`
}

Playground: http://play.golang.org/p/u23HuwYgq2

英文:

Embed the type with common attrs into your other types.

type AuthData struct {
	BuyerId  string `xml:"BuyerId,attr"`
	UserId   string `xml:"UserId,attr"`
	Language string `xml:"Language,attr"`
}

type MyRequest struct {
	XMLName  xml.Name `xml:"MyRequest"`
	AuthData // Embedding.
	Action   struct{} `xml:"Action"`
}

Playground: http://play.golang.org/p/u23HuwYgq2.

huangapple
  • 本文由 发表于 2015年7月15日 21:26:31
  • 转载请务必保留本文链接:https://go.coder-hub.com/31431719.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定