2014-10-27 134 views
0

我有一个XML字符串遍历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> 

回答

0

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

  1. 解组XML转换为一个struct,
  2. 然后操纵结构
  3. 然后编组回一个字符串。

事情是这样的:

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)) 
} 
+0

所以,我怎么能穿越通给出一个字符串结构? – K2xL 2014-10-28 21:04:51

+0

如果你想遍历或操作dom,你需要解组它。 我99%确定它不可能遍历一个字符串。一个字符串没有xml结构的概念,它只是一个字节片段。 – icchanobot 2014-10-29 05:38:55