jjzjj

xml - 解码 XML 以构造并转换为 slice

coder 2024-07-11 原文

我在 Golang 中有一个简单的项目,我用它来学习这门语言。我正在开发的“服务”的主要目的是运行一个守护进程来保存以 XML 形式公开的 URL。这样我就可以“制作”我自己的稍后阅读服务。到目前为止,一切都很好 :)。您可以在这里找到该项目:https://github.com/rogierlommers/readinglist-golang

我使用 Gin-Gonic 作为提供 html 的框架。我已经设法读取一个 xml 文件,对其进行解码,但现在我想向这个“东西”中添加一些新数据。换句话说:我想我需要将它转换成一个 slice ,但我不知道如何管理它。

端点 r.GET("/add/:url") 应该使用函数 util.AddRecord 将新的 url 插入到 slice 中。但是如何呢?

[编辑] 基本上我的问题可以在这个 go playground 中查看:http://play.golang.org/p/Vx0s02E12R

最佳答案

在对您提出的问题的评论中:

I first need to create a slice, right?

答案是肯定的,但是您的 ReadingListRecords 结构中已经有一个 slice :

type ReadingListRecords struct {
    XMLName xml.Name `xml:"records"`
    Records []Record `xml:"record"`
}

因此,您可以简单地对该 slice 调用 append 并传入一个新的记录结构:

records.Records = append(record.Records, Record{xml.Name{"", "record"}, 4, "url", "2015-03-09 00:00:00"})

您还可以为您的 ReadingListRecords 结构扩展 API,以包含一个方便的 Append 函数:

type RecordSet interface {
    Append(record Record) error
}

func (records *ReadingListRecords) Append(record Record) error {
    newRecords := append(records.Records, record)

    if newRecords == nil {
        return errors.New("Could not append record")
    } else {
        records.Records = newRecords
        return nil
    }
}

添加接口(interface)似乎是个好主意,因为您想在多个应用程序中将其用作服务。

参见 my fork of your playground here .

关于xml - 解码 XML 以构造并转换为 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28950892/

有关xml - 解码 XML 以构造并转换为 slice的更多相关文章

  1. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  2. ruby - 如何在ruby中转换为big endian - 2

    我有一个小端顺序的字符串,作为十六进制编码的字符串000000020597ba1f0cd423b2a3abb0259a54ee5f783077a4ad45fb6200000218000000008348d1339e6797e2b15e9a3f2fb7da08768e99f02727e4227e02903e43a42b31511553101a051f3c00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000我想将每个32位block从l

  3. ruby-on-rails - 如何在 Rails 3 中禁用 XML 解析 - 2

    我想禁用HTTP参数的自动XML解析。但我发现命令仅适用于Rails2.x,它们都不适用于3.0:config.action_controller.param_parsers.deleteMime::XML(application.rb)ActionController::Base.param_parsers.deleteMime::XMLRails3.0中的等价物是什么? 最佳答案 根据CVE-2013-0156的最新安全公告你可以将它用于Rails3.0。3.1和3.2ActionDispatch::ParamsParser::

  4. ruby - 如何使用 Nokogiri::XML::Builder 生成动态标签? - 2

    我正在遍历数组中的一组标签名称,我想使用构建器打印每个标签名称,而不是求助于“我认为:builder=Nokogiri::XML::Builder.newdo|xml|fortagintagsxml.tag!tag,somevalendend会这样做,但它只是创建名称为“tag”的标签,并将标签变量作为元素的文本值。有人可以帮忙吗?这个看起来应该比较简单,我刚刚在搜索引擎上找不到答案。我可能没有以正确的方式提问。 最佳答案 尝试以下操作。如果我没记错的话,我添加了一个根节点,因为Nokogiri需要一个。builder=Nokogi

  5. ruby - 如何让 Nokogiri 解析并返回 XML 文档? - 2

    这是一些奇怪的例子:#!/usr/bin/rubyrequire'rubygems'require'open-uri'require'nokogiri'print"withoutread:",Nokogiri(open('http://weblog.rubyonrails.org/')).class,"\n"print"withread:",Nokogiri(open('http://weblog.rubyonrails.org/').read).class,"\n"运行此返回:withoutread:Nokogiri::XML::Documentwithread:Nokogiri::

  6. ruby - 模式加载时出现 Nokogiri::XML::Schema SyntaxError - 2

    我正在尝试加载SAML协议(protocol)架构(具体来说:https://www.oasis-open.org/committees/download.php/3407/oasis-sstc-saml-schema-protocol-1.1.xsd),但在执行此操作之后:schema=Nokogiri::XML::Schema(File.read('saml11_schema.xsd'))我得到这个输出:Nokogiri::XML::SyntaxErrorException:Element'{http://www.w3.org/2001/XMLSchema}element',att

  7. ruby - 我如何从 Rational(或任何没有构造函数的类)继承? - 2

    例如,我可以很容易地继承自String,如下所示:classMyString'thingsandstuff'但是我如何继承没有构造函数的Rational呢?例如:defMyRatNoMethodError:undefinedmethod`new'forMyRat:ClassMyRat(10).inc#=>NoMethodError:undefinedmethod`MyRat'formain:ObjectMyRat.send(:initialize,10).inc#=>TypeError:alreadyinitializedclass#???#Noneofitworks!我找不到初始化新

  8. ruby - 这种类似哈希/树状的构造称为什么? - 2

    我想创建一个介于散列和树之间的“Config”类。它只是用于存储全局值,可以有一个上下文。下面是我的使用方法:Config.get("root.parent.child_b")#=>"value"类可能如下所示:classConstructdefget(path)#splitpathby"."#searchtreefornodesenddefset(key,value)#splitpathby"."#createtreenodeifnecessary#settreevalueenddeftree{:root=>{:parent=>{:child_a=>"value",:child_b=

  9. ruby-on-rails - JSON解码参数问题 - 2

    我有一个使用postgresql的Rails4应用程序。我还有一个backbone.js应用程序,可将JSON推送到Rails4应用程序。这是我的Controller:defcreate@product=Product.new(ActiveSupport::JSON.decodeproduct_params)respond_todo|format|if@product.saveformat.json{renderaction:'show',status::created,location:@product}elseformat.json{renderjson:@product.erro

  10. ruby - 将构造函数参数转换为实例变量 - 2

    这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Idiomaticobjectcreationinruby很多时候我有一个initialize方法,看起来像这样:classFoodefinitializebar,buz,...@bar,@buz,...=bar,buz,...endend有没有办法用一个简单的命令来做到这一点,比如:classFooattr_constructor:bar,:buz,...end其中的符号代表实例变量的名称(具有attr_accessor、attr_reader、attr_writer的精神/风格)?我想知道是否有内置的方式

随机推荐