2014-10-27 176 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