如何替换文本中的一些xml标签

时间:2019-10-10 10:18:09

标签: xml go xml-parsing

我有字符串= Hello, <param value="username"/>!。 我需要处理它,并用某些变量替换所有参数标签。

1)s = Hello, <param value="username"/>!

2)处理

3)s =“你好,亚当!”

我需要帮助查找库来解决此类问题。 你知道吗?

2 个答案:

答案 0 :(得分:1)

标准库有一个XML parser

package main

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

func main() {
    s := `Hello, <param value="username"/>!`

    d := xml.NewDecoder(strings.NewReader(s))
    for {
        t, err := d.Token()
        if err == io.EOF {
            break
        }
        if err != nil {
            log.Fatal(err)
        }

        switch t := t.(type) {
        case xml.CharData:
            fmt.Print(string(t))
        case xml.StartElement:
            fmt.Print("Adam")
        }
    }
    fmt.Println("")
}

// Output:
// Hello, Adam!

答案 1 :(得分:0)

XSLT样式表的简单作业。像这样:

<xsl:template match="param">
  <xsl:value-of select=$supplied-params//param[@name=current()/@value]/@value"/>
</xsl:template>

其中$supplied-params是一个XML文档,其中包含参数值,例如

<params>
  <param name="username" value="Adam"/>
</params>