首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何重命名节点属性

如何重命名节点属性
EN

Stack Overflow用户
提问于 2016-05-05 15:41:24
回答 1查看 649关注 0票数 1

我试图使XML更加友好。其中的一部分是重命名名字。到目前为止,我成功地将节点重命名为我喜欢的,但是,我不知道如何重命名节点属性。

XML:

代码语言:javascript
复制
<result>
  <rowset name="characters" key="characterID" columns="name,characterID,corporationName,corporationID,allianceID,allianceName,factionID,factionName">
    <row name="Sult Dizarra" characterID="93125548" corporationName="Dry Atomic Fusion" corporationID="98012663" allianceID="154104258" allianceName="Apocalypse Now." factionID="0" factionName=""/>
    <row name="Bingu Pondarra" characterID="93421113" corporationName="Realm of Echidna" corporationID="98349254" allianceID="0" allianceName="" factionID="0" factionName=""/>
    <row name="Janna 'Wabisuke' Cobb" characterID="93431793" corporationName="Super Sexy" corporationID="98383185" allianceID="0" allianceName="" factionID="0" factionName=""/>
  </rowset>
</result>

xml.traverse do |node|
  if node.kind_of?(Nokogiri::XML::Element)
    node.each do |child|
      child.keys.each do |key|
        key.name = rename_method(key.name)
      end
    end
  end
end

但我在路上的某个地方出了问题。有人能把我推向正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 16:20:32

简单的农民:

代码语言:javascript
复制
require 'nokogiri'

doc = Nokogiri::XML('<root><node foo="foo" /></root>')
node = doc.at('node')
node['bar'] = node['foo']
node.delete('foo')
doc.to_xml # => "<?xml version=\"1.0\"?>\n<root>\n  <node bar=\"foo\"/>\n</root>\n"

其核心是:

代码语言:javascript
复制
node['bar'] = node['foo']
node.delete('foo')

可简化为:

代码语言:javascript
复制
node['bar'] = node.delete('foo')

这一切都在Nokogiri::XML::节点文档中。我建议花时间回顾它,因为Node和NodeSet包含了与Nokogiri一起使用的大多数方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37054695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档