如何从 go 中的 XML 元素获取文本(结构标签)?

Viv*_*ivi 1 xml go xml-parsing

以下 XML 是一个具有嵌套字段(标题、作者等)和文本(Blah Blah...)的元素示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <book category="cooking">
      <title lang="en">Everyday Italian</title>
      <author>Giada De Laurentiis</author>
      <year>2005</year>
      <price>30.00</price>
      Blah Blah Blah Bleh Blah
    </book>
Run Code Online (Sandbox Code Playgroud)

我已经编写了此结构来解码此 XML,但我不知道在这种情况下应该使用哪个结构标记。我在文档中搜索但一无所获。

    type Book struct{
       t string `xml:"book>title"`
       p string `xml:"book>price"`
       y string `xml:"book>year"`
       a string `xml:"book>author"`
       blah string ???????
    }
Run Code Online (Sandbox Code Playgroud)

Adr*_*ian 5

根据文档

如果 XML 元素包含字符数据,则该数据将累积在具有标记“,chardata”的第一个结构字段中。结构字段的类型可以是 []byte 或 string。如果不存在该字段,则丢弃该字符数据。

因此,您可以使用这样的结构对其进行解码:

type Book struct {
    Title   string   `xml:"title"`
    Price   string   `xml:"price"`
    Year    string   `xml:"year"`
    Author  string   `xml:"author"`
    Body    string   `xml:",chardata"`
}
Run Code Online (Sandbox Code Playgroud)

(请注意,您要解组到的字段必须是导出的,即必须以大写字母开头,否则它们无法被解组到。)

您可以在此处查看示例:https ://play.golang.org/p/OlwSqnHsT7