使用golang解析tei XML

时间:2015-03-02 14:12:58

标签: xml go

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

问题:

  1. 即使tei文件无效且xml有效,该示例也不会返回任何内容。如果我删除第23行<TEI>(因此xml不再有效),该示例将打印一些内容。
  2. 如何让Line结构为包含<l>元素?
  3. 内容的字符串
  4. 在Page结构中,我需要n属性的值,我该如何实现?
  5. 解组正确解析这些文件或nokogiri的方法会是更好的解决方案吗?

    由于

1 个答案:

答案 0 :(得分:0)

使用xml.Unmarshal()读取此XML非常好。

问题是XML结构如下:

<TEI>
    <text>
        <sp>
        </sp>
        <sp>
        </sp>
    </text>
</TEI>

你的Go结构如下:

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上尝试修改后的代码。