如何通过golang解码具有特殊字符的xml

时间:2017-11-30 02:45:30

标签: xml go

例如,如果xml很简单:

<p>this is a test xml</p>

然后我可以使用这样的结构:

type Dummy struct { XMLName xml.Name `xml:"p"` Value string `xml:",chardata"` }

但是如果xml有特殊字符,比如

<p>this is a test < xml & </p>

我使用相同的结构并且它导致错误,并且它似乎与struct无关,因为我使用了接口{}并且它导致错误相同。

我阅读了“encoding / xml”包的文档,但找不到正确的方法。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

如果您查看错误(在golang playground上尝试),它会告诉您输入的内容不是有效的XML。

XML syntax error on line 1: expected element name after <

不允许文本包含普通&lt;或者&amp;这样,请参阅Character data section of the xml spec

答案 1 :(得分:0)

此XML格式不正确。它包含语法错误,因为字符&具有特殊含义。如果您需要插入if作为符号本身,请使用&amp;进行更改。解析后,它将被替换回通常的&

同一规则适用于< - 应将其替换为&lt;

  <p>this is a test <gt; xml &amp; </p>

这是所有XML解析器和编码器的一般规则。任何其他XML系统都在等待类似的行为。