使用Go语言读取XML元素内部文本

2026年03月24日/ 浏览 3

正文:

在数据处理领域,XML作为一种结构化标记语言仍被广泛使用。Go语言的标准库encoding/xml提供了强大的解析能力,但处理元素内部文本时,开发者常会遇到一些“坑”。以下通过一个真实案例,展示如何优雅地提取XML中的标题、正文等内容。

1. XML结构示例

假设我们需解析如下结构的XML文档:
xml

Go语言实战
编程,后端
Go的并发模型是其核心优势…

]]>

2. 定义结构体与解析逻辑

通过Unmarshal解析时,需注意嵌套文本CDATA区块的处理。以下是核心代码:


package main

import (
    "encoding/xml"
    "fmt"
    "strings"
)

type Article struct {
    Title    string `xml:"title"`
    Keywords string `xml:"keywords"`
    Content  string `xml:"content"` // 自动处理CDATA
}

func main() {
    data := `
    
Go语言实战 编程,后端 Go的并发模型是其核心优势...

]]>
` var article Article if err := xml.Unmarshal([]byte(data), &article); err != nil { panic(err) } fmt.Printf("标题: %s\n关键词: %s\n正文: %s\n", strings.TrimSpace(article.Title), article.Keywords, article.Content, ) }

3. 关键技巧与避坑

  • 空格处理:XML缩进可能导致文本包含多余空格,使用strings.TrimSpace()净化数据。
  • CDATA兼容:Go的encoding/xml默认支持CDATA解析,无需特殊处理。
  • 性能优化:对于大文件,建议使用xml.Decoder流式解析而非Unmarshal

4. 实际应用场景

通过合理利用Go的XML库,开发者能高效处理复杂数据结构。但切记测试边界条件,比如空标签或非法字符,这些往往是线上事故的源头。

picture loss