使用 Nokogiri 插入和删除 XML 节点和元素

2024-02-21

我想提取 XML 文件的部分内容,并记下我提取了该文件中的某些部分,例如“此处提取了某些内容”。

我正在尝试使用 Nokogiri 来做到这一点,但似乎并没有真正记录如何:

  1. 删除 a 的所有子项<Nokogiri::XML::Element>
  2. 改变inner_text那个完整元素的

有什么线索吗?


Nokogiri 让这一切变得非常简单。使用这个文件 http://www.alistapart.com/d/usingxml/xml_uses_a.html例如,以下代码将查找所有vitamins标签,删除他们的孩子(以及孩子的孩子等),并将其内部文本更改为“孩子已删除。”:

require 'nokogiri'

io = File.open('sample.xml', 'r')
doc = Nokogiri::XML(io)
io.close

doc.search('//vitamins').each do |node|
  node.children.remove
  node.content = 'Children removed.'
end

A given food节点将看起来像这样:

<food>
    <name>Avocado Dip</name>
    <mfr>Sunnydale</mfr>
    <serving units="g">29</serving>
    <calories total="110" fat="100"/>
    <total-fat>11</total-fat>
    <saturated-fat>3</saturated-fat>
    <cholesterol>5</cholesterol>
    <sodium>210</sodium>
    <carb>2</carb>
    <fiber>0</fiber>
    <protein>1</protein>
    <vitamins>
        <a>0</a>
        <c>0</c>
    </vitamins>
    <minerals>
        <ca>0</ca>
        <fe>0</fe>
    </minerals>
</food>

to this:

<food>
    <name>Avocado Dip</name>
    <mfr>Sunnydale</mfr>
    <serving units="g">29</serving>
    <calories total="110" fat="100"/>
    <total-fat>11</total-fat>
    <saturated-fat>3</saturated-fat>
    <cholesterol>5</cholesterol>
    <sodium>210</sodium>
    <carb>2</carb>
    <fiber>0</fiber>
    <protein>1</protein>
    <vitamins>Children removed.</vitamins>
    <minerals>
        <ca>0</ca>
        <fe>0</fe>
    </minerals>
</food>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Nokogiri 插入和删除 XML 节点和元素 的相关文章

  • Ruby 枚举器中的“break”与“raise StopIteration”

    如果我使用 Ruby Enumerators 来实现生成器和过滤器 generator Enumerator new do y x 0 loop do y lt lt x x 1 break if x gt CUTOFF end end l
  • 如何在 Rails 4 中使用 params.require

    我有一个像这样的私有方法 用于有四个字段的注册表单 firstname email password and confirm password 我不知道如何检查password confirmation def user params pa
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • Heroku 部署错误

    在 Windows 环境中 尝试部署到 Heroku 时出现以下错误 C Ruby lib ruby gems 1 8 gems heroku 1 9 13 lib heroku commands base rb 32 in 没有这样的文件
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • “rmagick”gem 安装问题

    我在尝试在 centos 上安装 rmagick gem 时遇到问题 以下是我得到的输出 谁能帮我识别一下我缺少什么包裹 我已经安装了所有提到的另一个堆栈溢出线程 RMagick安装错误 https stackoverflow com qu
  • rvm gem 安装错误?

    我正在摆弄 ruby gems 和 rvm 它工作得很好 但现在当我尝试安装 gem 时出现错误 gem install Rails错误 同时 执行 gem Errno EACCES 权限被拒绝 Users da rvm gems ruby
  • 已定义方法的 Ruby 钩子?

    我一直在谷歌上搜索这个问题 但找不到答案 这让我认为答案是否定的 但我想我会在这里问 以防有人确切知道 Ruby 是否有一个钩子来定义方法 即在模块或类上 如果没有 是否有人足够熟悉该实施的情况main对象以了解它到底如何将方法复制到Obj
  • 在 ruby​​ 中下载多个 FTP 文件,如 d*.txt

    我需要连接到 ftp 站点并下载一堆名为 D txt 的文件 最多 6 个 你能帮我用 Ruby 编写这个代码吗 下面的代码只是 ftp Net FTP new ftp server site ftp login user pwd ftp
  • 我可以将 MAMP (MySQL) 或 XAMPP (MySQL) 与 Ruby on Rails 3 一起使用吗?

    我可以将 MAMP MySQL 或 XAMPP MySQL 与 Ruby on Rails 3 一起使用吗 我从 MYSQL com 安装了 MySQL 但遇到了很多麻烦 所以我喜欢使用 MAMP XAMPP Mysql 有人这样做吗 另外
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • Ruby 是否有一个 Expect 等效 gem?

    Ruby 是否有一个 Expect 等效 gem 我尝试在 code google 和 ruby gems org 上搜索 但遗憾的是它没有出现 FYI Expect http en wikipedia org wiki Expect是一个
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 我可以让这个 Ruby 代码更快并且/或使用更少的内存吗?

    我有一个Array of StringRuby 中的对象由如下单词组成 animals cat horse dog cat dog bird dog sheep chicken cow 我想将其转换为另一个Array of String对象
  • 从logstash中的文件名获取事件的时间戳

    我们有一个将事件写入文件的进程 没有时间戳 文件名本身带有时间戳后缀 该时间戳应用于文件中的所有事件 现在 我尝试使用logstash的输入文件插件来解析该文件 有没有一种方法可以将文件名获取到字段 以便我可以使用 gsub 过滤器提取时间
  • 如何将文件的元素放入哈希中? -红宝石

    所以我有一个以下形式的文件 Key1 Value1 Key2 Value2 Key3 Value3 用制表符分隔 我的问题是如何打开这个文件并将其放入哈希中 我曾尝试这样做 fp File open file path fp each do
  • ruby rspec 不能与 simplecov 一起使用

    我安装了 simplecov gem 并添加了 require simplecov SimpleCov start 到spec helper rb文件 现在如果我在some file spec rb文件中包含spec helper rb并尝
  • ruby 字符串到哈希值的转换

    我有一个这样的字符串 str uu p xx m yy n zz m 我想知道如何将给定的字符串转换为哈希值 即我的实际要求是 有多少个值 符号之前 有m n和p 我不需要计数 我需要一个精确的值 这样输出效果会更好 m gt xx zz

随机推荐

  • Restore_best_weights 问题 keras 提前停止

    我正在将 Keras 的 EarlyStopping 用于我的深度学习项目 文档here https keras io callbacks earlystopping提到了一个非常有用的恢复最佳体重的想法 但不知何故我还无法使用它 我使用的
  • 使用 lambda 表达式来避免使用“魔术字符串”来指定属性

    我正在编写一项服务来获取特定类型的对象集合输出其原始类型 字符串类型和日期时间类型 https stackoverflow com questions 3161959 in c is there a way retrieve only bu
  • C++ 使用 .o 链接和使用 .a 文件链接之间存在差异:行为不同,为什么?

    我期望 与 o 文件链接和与从 o 文件存档的 a 文件链接应该没有区别 但事实并非如此 我有2个源文件 每个都声明1个类 1个静态对象 1个函数 以及一个调用其中一个函数的main cpp cat First cpp include
  • 改变rgba颜色的色调

    我使用 RGBA 颜色在 matplotlib 中将一堆数据绘制为对数刻度上的散点图 以防万一介质相关 我希望能够做的是 一旦绘制了所有内容 我想挑选出各个散点并将其色调更改为某种 RGB 颜色的色调 但保留旧的 alpha 值 我目前的做
  • 将分类数据从 CSV 加载到 Scikit-Learn 以进行机器学习

    我正在学习 Scikit Learn 对推文进行一些分类 我有一个 csv 其中一列包含推文 下一列包含 0 11 的班级 我经历了本教程来自 Scikit Learn 网站 http scikit learn org stable tut
  • 日期范围越小SQL查询时间越长?

    我有一个简单的 select 语句 它从 SQL Server 2000 这么旧 的表中选择数据 该表大约有 10 2000 万行 如下所示 startDate 2014 01 25 yyyy mm dd endDate 2014 02 2
  • 如何按值对多维数组进行排序? [复制]

    这个问题在这里已经有答案了 我有一个如下数组 我想按键 attack 的值对该数组进行排序 数组的第一个键 15 13 18 是数据库中某些特定项目的 ID 因此我不希望在数组排序时更改这些键 任何帮助将不胜感激 这是数组 data arr
  • MongoException:名称索引:代码已存在且具有不同选项

    我有一个mongodb收藏term具有以下结构 id 00002c34 a4ca 42ee b242 e9bab8e3a01f terminologyClass USER code X67 terminology some term rel
  • 用 Haskell 解释 Parigot 的 lambda-mu 演算

    我们可以用 Haskell 来解释 lambda 演算 data Expr Var String Lam String Expr App Expr Expr data Value a V a F Value a gt Value a int
  • Powershell 中所有进程的 CPU 和内存使用百分比

    有没有一种方法可以查看所有正在运行的进程的 CPU 和内存利用率百分比PowerShell 我已经尝试过以下方法 Get Process Process 0 CPU Usage 1 Memory Usage 2 f ProcessName
  • Vue 路由器页面刷新时出现 404

    我正在使用具有历史模式的 Vue 路由器 在按钮上单击当前页面 我将其路由到下一页 在第二页上 当我重新加载时 我收到 404 有没有办法在 Vue 中处理这个问题并将其重定向到主页 export default new Router mo
  • 如何在 Alexa Skill 中使用 Java 获取亚马逊用户电子邮件

    我是 Alexa 技能开发的新手 我正在尝试开发一项 Alexa 通过我的电子邮件回复的技能 我正在开发 Java 技能 并且我刚刚能够通过以下方式获取用户会话 ID getSession getUser getUserId Getting
  • 如何记录 Azure 服务总线访问?

    有没有办法记录对 Azure 服务总线的访问 我们正在寻找一种方法来记录谁在服务总线中创建 删除主题 订阅 命名空间 无论是从 Azure 门户还是从外部源 如 API 或 Service Bus Explorer We have Azur
  • “错误:没有 Overlay 提供程序!”

    In my Angular 2 0 0 rc 7 Angular Material 2 0 0 alpha 8 1应用程序构建Angular CLI 1 0 0 beta 11 webpack 9 1 升级后出现以下错误rc 5 alpha
  • AWS 相当于 Firebase 实时数据库的是什么?

    我目前正在开发一个新的游戏项目 该项目将由 React Native 前端和基于 Lambda 的后端组成 该应用程序需要一些实时功能 例如活动用户记录 地理围栏等 我正在研究 Firebase 的实时数据库 它看起来像是一个非常优雅的实时
  • Vim:使用 \_ 跨多行匹配字符串时。在正则表达式中,:yank 命令仅适用于第一行

    我想提取一些跨越多行的文本的多次出现 并且可以与单个 Vim 正则表达式匹配 使用元字符 不幸的是 尽管 Vim 中匹配的行被正确突出显示 当我在匹配的正则表达式后添加任何 Vim 命令 例如删除或拉取 时 该命令仅适用于每场比赛的第一行
  • 在这种情况下我应该如何舍入浮点数?

    由于同一浮点数可以有多种表示形式 我的代码中遇到了问题 例如 这些数字被认为是相同的 0 0299999400 0 0300000000 我不太关心大精度 我需要计算CRC这些数字的数量 它们应该是相同的 所以我的方法是使用以下代码 pri
  • 在超级项目中自动提交 git 子模块哈希

    当你在git子模块中提交时 你需要到超级项目中进行第二次提交 这是子模块的新哈希 这非常烦人 很容易忘记 如果您不这样做 可能会导致各种问题 我想做的是 提交我的子模块中的更改 在超级项目中自动提交哈希 将子模块和超级项目推送到其远程源 g
  • 优化多词编辑距离的速度

    我有一个元胞数组字典 其中包含很多单词 约 15000 个 我想计算函数strdist 计算 Levenshtein 距离 所有单词对 我尝试了两种方法 但它们都很慢 什么是更有效的解决方案 这是我的代码 dict keys 是我长度为 m
  • 使用 Nokogiri 插入和删除 XML 节点和元素

    我想提取 XML 文件的部分内容 并记下我提取了该文件中的某些部分 例如 此处提取了某些内容 我正在尝试使用 Nokogiri 来做到这一点 但似乎并没有真正记录如何 删除 a 的所有子项