【问题标题】:Xml Unmarshal failingXml Unmarshal 失败
【发布时间】:2015-02-09 21:08:05
【问题描述】:

我正在尝试将简单的 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)
    }

【问题讨论】:

    标签: go xml-parsing


    【解决方案1】:

    不要忽视你的错误

    您输入的数据无效。

    xml.Unmarshal 如果失败,则返回error。用这个代替你的电话:

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

    ...显示:

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

    从您的输入中删除 &amp;#031 使其工作。

    See it on the Go Playground

    【讨论】:

    • 是的,那是我的问题。那个 UTF 字符有什么特别之处。我如何用那个字符解析
    猜你喜欢
    • 2021-07-06
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多