【问题标题】:Unable to parse values in Go code无法解析 Go 代码中的值
【发布时间】:2018-12-17 22:50:16
【问题描述】:

我开始使用 Go,发现解析 html 或 xml 文档本身并没有强大的工具(如果没有,请原谅我的无知)。

事实是我有以下地图(我使用 github.com/clbanning/mxj 将 xml 转换为地图)。这是一份 XML 和 HTML Clover 报告。

我想要的是访问不同的值:XML pastebin

我的代码:

    xmlFile, err := os.Open(dir + "\\clover.xml")
    if err != nil {
        fmt.Println("Error opening file:", err)
        return
    }
    b, _ := ioutil.ReadAll(xmlFile)
    defer xmlFile.Close()
                fmt.Println("xmldata:", string(b))

    // get all image tag values - []interface{}
    mapvalue, merr := mxj.NewMapXml(b)
    if merr != nil {
        fmt.Println("merr:", merr.Error())
        return
    }

即使通过以下方式我也可以细分它:

    sources, err := mapvalue.ValuesForKey("metrics")
    if err != nil {
        fmt.Println("err:", err.Error())
        return
    }

    for i, src := range sources {
        fmt.Println(i, src)
    }


    fmt.Println(sources[0])

正是我需要的那个。但现在我无法访问每一个内在价值。

map[-loc:459 -statements:71 -coveredmethods:14 -ncloc:307 -files:12 -conditionals:6 -coveredelements:45 -packages:8 -elements:110 -complexity:37 -classes:12 -coveredconditionals:1 -coveredstatements:30 -methods:33]

有没有更简单的方法来处理我在本地拥有的 XML 和 html?

我将 XML 添加到映射结果:pastebin

【问题讨论】:

标签: go xml-parsing html-parsing


【解决方案1】:

GO有一个xml解析库https://golang.org/pkg/encoding/xml/

我在这里有一个可运行的示例:https://play.golang.org/p/kVG3w4iu3Kl

package main

import (
    "fmt"
    "encoding/xml"
)

var rawXml = "<metrics coveredelements=\"45\" complexity=\"37\" loc=\"459\" methods=\"33\"/>"

type Metrics struct {
    CoveredElements string `xml:"coveredelements,attr"`
    Complexity      string `xml:"complexity,attr"`
    Loc             string `xml:"loc,attr"`
    Methods         string `xml:"methods,attr"`
}

func main() {
    data := &Metrics{}
    xml.Unmarshal([]byte(rawXml), data)
    fmt.Printf("%+v", data)
}

我认为您会发现使用结构更容易。

【讨论】:

    【解决方案2】:

    我发现这个实用程序允许我实现必要的结构来解析 JSON 答案(您可以使用转换器)。我希望你也觉得它有用:

    https://mholt.github.io/json-to-go/

    您可以像这样在线使用 JSON/XML 转换器:http://www.utilities-online.info/xmltojson/#.W1cSCNIzZPY

    对于其余部分,我使用 @Rossiar 在他的评论中所说的相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多