dongxifu5009 2018-04-16 22:03
浏览 39
已采纳

如何使用xml golang std查找已知属性和令牌的值。 LIB

I'm parsing the body of an http request that is set up in like this:

<something>
...
<inner_something> 
...
<foo bar='VALUE_I_WANT'>
... 
</FOO >
...
</inner_something>
...
</something>

What is an idiomatic approach to finding VALUE_I_WANT? Can I loop though the tokens using a decoder? How can check that a token is foo and get the attribute bar? (those names are constant). Is that the only way using the std lib? No way to look up tokens directly?

  • 写回答

1条回答 默认 最新

  • douyasihefu6214 2018-04-17 14:55
    关注

    You can use the encoding/xml package to parse your data. For example, define types representing your XML data:

    type Something struct {
        InnerSomething struct {
            Foo struct {
                Bar string `xml:"bar,attr"`
            } `xml:"foo"`
        } `xml:"inner_something"`
    } 
    
    type Result struct {
        Something `xml:"something"`
    }
    

    Then parse the data:

    func main() {
        data := `
    <something>
        <inner_something>
            <foo bar='VALUE_I_WANT'>test
            </foo >
        </inner_something>
    </something>`
        v := Result{}
        err := xml.Unmarshal([]byte(data), &v)
        if err != nil {
            fmt.Printf("error: %v", err)
            return
        }
        fmt.Printf("bar: %q", v.Something.InnerSomething.Foo.Bar)
    }
    

    See https://golang.org/pkg/encoding/xml/.

    Here is a working sample in the Go Playground.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)