代码之家  ›  专栏  ›  技术社区  ›  Adam Sheehan

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

  •  8
  • Adam Sheehan  · 技术社区  · 14 年前

    http://golang.org/pkg/xml/ ).

    我的问题是我不知道如何读取元素的内部文本。我将文档加载到xml.Parser中,然后调用Parser.Token()遍历文件。我检查令牌使用了什么,如下所示:

    token, err := parser.Token()
    if element, ok := token.(xml.StartElement); ok {
      // process as a start element. I can read the element name and attributes here
    }
    
    if charData, ok := token.(xml.CharData); ok {
      // process as text. How do I read the text data?
    }
    

    type CharData []byte
    

    但我似乎不能使用charData变量作为字节数组来转换为字符串。为CharData定义的唯一方法是复制令牌,但这只会提供CharData变量的另一个副本。我试过一些方法,但它们无法编译:

    innerText := string(charData)
    innerText := string(charData[0:])
    innerText := string(charData[0]) // this compiled but is not what I want
    

    是否有其他方法将xml.CharData变量视为字节片?

    1 回复  |  直到 14 年前
        1
  •  4
  •   cthom06    14 年前

    string([]byte(charData)) .

    []byte string 是类型转换的特例。通常,新类型和原始类型必须具有相同的基础类型(即xml.CharData和[]byte)