遍历XML

时间:2014-10-27 22:15:37

标签: xml go

我有一个XML字符串

str := "<data><node><value>Foo</value></node></data>"

我需要用另一个值(Bar)替换值。给出一条路径

"data.node.value"

Go中有没有办法找到并替换该值?所以打电话给Replace(str, "data.node.value","Bar")

<data><node><value>Bar</value></node></data>

1 个答案:

答案 0 :(得分:0)

我认为不可能,因为你只有一个字符串。 你需要

  1. 将XML解组为结构
  2. 然后操纵结构
  3. 然后把它编成一个字符串。
  4. 这样的事情:

    package main
    
    import (
        "encoding/xml"
        "fmt"
    )
    
    type Data struct {
        Node Node `xml:"node"`
    }
    
    type Node struct {
        Value string `xml:"value"`
    }
    
    func main() {
        str := "<data><node><value>Foo</value></node></data>"
    
        var d Data
        xml.Unmarshal([]byte(str), &d)  // unmarshal it
    
        d.Node.Value = "Bar" // manipulate the struct
    
        xmlout, _ := xml.Marshal(d) // re-marshal it
    
        fmt.Println("result: ", string(xmlout))
    }