英文:
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))
}
在上面的示例中,我们定义了两个结构体Person
和Employee
,分别表示XML元素person
和employee
。Employee
结构体中有一个额外的属性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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论