Parsing a tei XML with golang



我需要用golang解析一个tei XML文件。我尝试使用encoding/xml解组器。以下是示例:http://play.golang.org/p/h0k-4IjngY

问题:

  1. 即使tei文件无效并且xml有效,该示例也不会返回任何信息。如果我删除第23行<TEI>(因此xml不再有效),则示例会打印一些内容
  2. 如何使Line结构成为包含<l>元素内容的字符串
  3. 在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上试用您修改后的代码。

最新更新