Как заменить некоторые теги XML в тексте - PullRequest
1 голос
/ 10 октября 2019

У меня есть строка = Hello, <param value="username"/>!. Мне нужно обработать его и заменить все теги param определенными переменными.

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

2) обработка

3) s = "Здравствуйте,Адам! "

Мне нужна помощь в поиске библиотек для решения подобных проблем. Вы знаете такое?

Ответы [ 2 ]

1 голос
/ 10 октября 2019

В стандартной библиотеке есть XML-парсер :

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!
0 голосов
/ 10 октября 2019

Простая работа для таблицы стилей 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>
...