我需要用golang解析一个tei XML文件。我尝试使用encoding/xml解组器。以下是示例:http://play.golang.org/p/h0k-4IjngY
问题:
- 即使tei文件无效并且xml有效,该示例也不会返回任何信息。如果我删除第23行
<TEI>
(因此xml不再有效),则示例会打印一些内容 - 如何使Line结构成为包含
<l>
元素内容的字符串 - 在Page结构中,我需要
n
属性的值,如何实现
解组是解析这类文件的正确方法吗?还是nokogiri是更好的解决方案?
感谢
使用XML读取这个XML是非常好的。取消聚合()。
问题是XML结构如下:
<TEI>
<text>
<sp>
</sp>
<sp>
</sp>
</text>
</TEI>
你的围棋结构如下:
Page
[]Speak
缺少一层您的Page
可能与<TEI>
或<text>
元素匹配,但不能同时匹配。如果删除<TEI>
元素,则它对您有效,因为Page
可以匹配<text>
及其内容。
解决方案:
添加另一个类似的包装:
type Text struct {
Txt Page `xml:"text"`
}
当然,解析这种类型的值:
var p Text
err := xml.Unmarshal([]byte(data), &p)
在Go Playground上试用您修改后的代码。