Xml Unmarshal失败了

时间:2015-02-09 21:08:05

标签: go xml-parsing

我正在尝试将简单的Xml架构解组为Struct。如果我在任何Xml节点值中找到,则似乎失败了。

读取Xml文件会导致运行时错误。 读取Xml字符串会导致缺少所有其他

示例:http://play.golang.org/p/waNn_1NpD1

package main

import (
    "encoding/xml"
    "fmt"
)

const (
  s = `<?xml version="1.0" encoding="UTF-8"?>
        <feed>
            <product>
                <description>
                 TEST VALUE sdfsdfsdfsdfsd   TEST VALUE sdfsdfsdfsdfsd   TEST VALUE sdfsdfsdfsdfsd   TEST VALUE sdfsdfsdfsdfsd    &#031;
                </description>
                <sku>ABCDD!@#</sku>
            </product>  
       </feed>`
)

type (
    Feed struct {
        XMLName xml.Name `xml:"feed"`
        Product Product  `xml:"product"`
    }

    Product struct {
        XMLName     xml.Name `xml:"product"`
        Description string   `xml:"description"`
        SKU         string   `xml:"sku"`
    }
)

    func main() {
        fmt.Println("Hello, playground")
        b := []byte(s)
        var feed Feed
        xml.Unmarshal(b, &feed)
        fmt.Println(feed.Product.Description)
        fmt.Println(feed.Product.SKU)
    }

1 个答案:

答案 0 :(得分:3)

不要忽略您的错误

您的输入数据无效。

如果失败,

xml.Unmarshal会返回error。用这个替换你的电话:

if err != nil {
    fmt.Println(err)
}

...表示:

XML syntax error on line 6: illegal character code U+001F

从输入中删除&#031会使其正常工作。

See it on the Go Playground