XML解组被并行标记绊倒

XML解组被并行标记绊倒,xml,go,rss,Xml,Go,Rss,我正在开发一个RSS阅读器应用程序,遇到了《纽约时报》RSS提要的一个问题。我已将问题缩小到以下XML(省略了不必要的字段): 解析时,链接字段为空。但是,通过删除atom:link字段,它可以正常工作。我认为标签名称的相似性让解析器感到困惑。我有一个围棋场,演示了这个问题,去掉这条线可以解决这个问题: 我如何解决这个问题?对它进行特殊处理实际上是不可行的,因为可能还有其他提要也可以这样做。这是Go的编码/xml包中长期存在的一个。基本上,当您不指定名称空间时,字段将匹配任何名称空间,而不是无名

我正在开发一个RSS阅读器应用程序,遇到了《纽约时报》RSS提要的一个问题。我已将问题缩小到以下XML(省略了不必要的字段):

解析时,链接字段为空。但是,通过删除atom:link字段,它可以正常工作。我认为标签名称的相似性让解析器感到困惑。我有一个围棋场,演示了这个问题,去掉这条线可以解决这个问题: 我如何解决这个问题?对它进行特殊处理实际上是不可行的,因为可能还有其他提要也可以这样做。

这是Go的
编码/xml
包中长期存在的一个。基本上,当您不指定名称空间时,字段将匹配任何名称空间,而不是无名称空间。事实上,只有在没有名称空间的情况下,才能使字段匹配。如果XML具有名称空间,则解决方案是显式设置它:

<item xmlns="foo">
  <link>https://www.nytimes.com/2017/09/25/briefing/nfl-angela-merkel-iraqi-kurdistan.html?partner=rss&amp;emc=rss</link>
  <atom:link rel="standout" href="https://www.nytimes.com/2017/09/25/briefing/nfl-angela-merkel-iraqi-kurdistan.html?partner=rss&amp;emc=rss"/>
  <pubDate>Mon, 25 Sep 2017 13:36:07 GMT</pubDate>
</item>

type item struct {
    Link    string `xml:"foo link"`
    PubDate string `xml:"pubDate"`
}

https://www.nytimes.com/2017/09/25/briefing/nfl-angela-merkel-iraqi-kurdistan.html?partner=rss&emc=rss

如果您的
链接
元素显式没有名称空间,那么您可能必须推出自己的
解组XML
方法

type item struct {
    Link    string `xml:"link"`
    PubDate string `xml:"pubDate"`
}
<item xmlns="foo">
  <link>https://www.nytimes.com/2017/09/25/briefing/nfl-angela-merkel-iraqi-kurdistan.html?partner=rss&amp;emc=rss</link>
  <atom:link rel="standout" href="https://www.nytimes.com/2017/09/25/briefing/nfl-angela-merkel-iraqi-kurdistan.html?partner=rss&amp;emc=rss"/>
  <pubDate>Mon, 25 Sep 2017 13:36:07 GMT</pubDate>
</item>

type item struct {
    Link    string `xml:"foo link"`
    PubDate string `xml:"pubDate"`
}