在具有任意结尾的元素的GO xml中进行解析

时间:2019-02-20 21:25:39

标签: xml go

我尝试解析具有任意结尾的元素的xml文件

具有Array0和Array1的xml示例:

<GetPriceChangesForReseller>
          <PriceContractArray0 actualtype="PriceContract">
            <EndUserPrice>1990,00</EndUserPrice>     
          </PriceContractArray0>
          <PriceContractArray1 actualtype="PriceContract">        
            <EndUserPrice>2290,00</EndUserPrice>
          </PriceContractArray1>  
</GetPriceChangesForReseller>

如何处理这种情况?

我的代码的一部分:

package main

import (
    "encoding/xml"
    "fmt"
    "io/ioutil"
    "os"
)


type GetPriceChangesForReseller struct {
    XMLName                    xml.Name             `xml:"GetPriceChangesForReseller"`
    GetPriceChangesForReseller []PriceContractArray `xml:"PriceContractArray"`
}


type PriceContractArray struct {
    XMLName             xml.Name `xml:"PriceContractArray"`
    Price               string   `xml:"Price"`
func main() {

// Open our xmlFile
xmlFile, err := os.Open("GetPriceChangesForReseller.xml")
// if we os.Open returns an error then handle it
if err != nil {
    fmt.Println(err)
}

提前谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用以下结构(try it online!):

type GetPriceChangesForReseller struct {
    XMLName xml.Name        `xml:"GetPriceChangesForReseller"`
    Items   []PriceContract `xml:",any"`
}

type PriceContract struct {
    Price string `xml:"EndUserPrice"`
}

应该可以。

答案 1 :(得分:0)

您可以尝试xmlquery,它易于解析和查询XML文档,而无需定义结构(如struct)。

const.bc
  

PriceContractArray0价格:1990,00

     

PriceContractArray1价格:2290,00