英文:
Go XML marshalling without encoding HTML entities
问题
我想将一个结构体编组成XML,但是不编码特殊的HTML实体。请参考这个例子:
http://play.golang.org/p/7NOhOTwlHr
字符串 test&abc
被转换成了 test&abc
,但是我希望它保持为 test&abc
。
英文:
I'd like to marshal a struct into XML, but without encoding special HTML-entities. See this example:
http://play.golang.org/p/7NOhOTwlHr
The string test&abc
gets converted to test&abc
, but I'd like it to stay test&abc
答案1
得分: 14
你可以像示例中所示使用标签",innerxml"。这里解释了",innerxml"使得unmarshal将"原始XML数据分配给它"。但它也可以很好地与Marshal一起使用,避免了字符串格式化。
http://play.golang.org/p/z8JQjRdbV4
英文:
You can use the tag ",innerxml" as show in the example. Here it explains that ",innerxml" makes unmarshal "assign raw XML data to it". But it also work well with Marshal avoiding the string formating.
答案2
得分: 1
在XML规范中,通过规则对和号进行转义。无法在标准的encoding/xml包的输出中禁用转义。
(HTML和XML中的和号转义共享自SGML的共同遗产,但每个都有单独的规范。它们之间没有派生或相互引用的关系)。
英文:
The ampersand is escaped using the rules in the XML specification. It is not possible to disable escaping in the output of the standard encoding/xml package.
(Ampersand escaping in HTML and XML shares a common heritage from SGML, but each is specified separately. One does not derive from or reference the other).
答案3
得分: 0
你可以使用这个技巧:
data, err = xml.Marshal(toMarshal)
data = bytes.Replace(data, []byte("&"), []byte("&"), -1)
fmt.Println(string(data))
另外,你还可以使用> <
,...
英文:
You can use this trick:
data, err = xml.Marshal(toMarshal)
data = bytes.Replace(data, []byte("&"), []byte("&"), -1)
fmt.Println(string(data))
Also you can use > <
,...
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论