使用 getNodeSet 解析 XML - 识别缺失的标签

2023-12-25

我正在解析 XML 文件getNodeSet()。假设我有一个来自书店的 XML 文件,其中列出了 4 本书,但其中一本书缺少“作者”标签。

如果我使用以下方法解析 XML 中的标签“authors”data.nodes.2 <- getNodeSet(data,'//*/authors'), R 返回 3 个元素的列表。

然而,这并不完全是我想要的。如何让“getNodeSet()”返回一个包含 4 个元素而不是 3 个元素的列表,即一个元素缺少值,其中标签“authors”不存在。

我很感激任何帮助。

library(XML)

file <- "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\r\n<!-- Edited by XMLSpy® -->\r\n<bookstore>\r\n<book category=\"cooking\">\r\n<title lang=\"en\">Everyday Italian</title>\r\n<authors>\r\n<author>Giada De Laurentiis</author>\r\n</authors>\r\n<year>2005</year>\r\n<price>30.00</price>\r\n</book>\r\n<book category=\"children\">\r\n<title lang=\"en\">Harry Potter</title>\r\n<authors>\r\n<author>J K. Rowling</author>\r\n</authors>\r\n<year>2005</year>\r\n<price>29.99</price>\r\n</book>\r\n<book category=\"web\">\r\n<title lang=\"en\">XQuery Kick Start</title>\r\n<authors>\r\n<author>James McGovern</author>\r\n<author>Per Bothner</author>\r\n<author>Kurt Cagle</author>\r\n<author>James Linn</author>\r\n<author>Vaidyanathan Nagarajan</author>\r\n</authors>\r\n<year>2003</year>\r\n<price>49.99</price>\r\n</book>\r\n<book category=\"web\" cover=\"paperback\">\r\n<title lang=\"en\">Learning XML</title>\r\n\r\n<year>2003</year>\r\n<price>39.95</price>\r\n</book>\r\n</bookstore>"

data <- xmlParse(file)

data.nodes.1 <- getNodeSet(data,'//*/book')

data.nodes.2 <- getNodeSet(data,'//*/authors')


# Data

# <?xml version="1.0" encoding="ISO-8859-1"?>
# <!-- Edited by XMLSpy® -->
# <bookstore>
#   <book category="cooking">
#     <title lang="en">Everyday Italian</title>
#     <authors>
#       <author>Giada De Laurentiis</author>
#     </authors>
#     <year>2005</year>
#     <price>30.00</price>
#   </book>
#   <book category="children">
#     <title lang="en">Harry Potter</title>
#     <authors>
#       <author>J K. Rowling</author>
#     </authors>
#     <year>2005</year>
#     <price>29.99</price>
#   </book>
#   <book category="web">
#     <title lang="en">XQuery Kick Start</title>
#     <authors>
#       <author>James McGovern</author>
#       <author>Per Bothner</author>
#       <author>Kurt Cagle</author>
#       <author>James Linn</author>
#       <author>Vaidyanathan Nagarajan</author>
#     </authors>
#     <year>2003</year>
#     <price>49.99</price>
#   </book>
#   <book category="web" cover="paperback">
#     <title lang="en">Learning XML</title>
#     <year>2003</year>
#     <price>39.95</price>
#   </book>
# </bookstore>

一种选择是使用 R 的列表处理从每个节点中提取作者

books <- getNodeSet(doc, "//book")
authors <- lapply(books, xpathSApply, ".//author", xmlValue)
authors[sapply(authors, is.list)] <- NA

并用书籍级别的信息来消化它

title <- sapply(books, xpathSApply, "string(.//title/text())")

giving

>     data.frame(Title=rep(title, sapply(authors, length)),
+                Author=unlist(authors))
              Title                 Author
1  Everyday Italian    Giada De Laurentiis
2      Harry Potter           J K. Rowling
3 XQuery Kick Start         James McGovern
4 XQuery Kick Start            Per Bothner
5 XQuery Kick Start             Kurt Cagle
6 XQuery Kick Start             James Linn
7 XQuery Kick Start Vaidyanathan Nagarajan
8      Learning XML                   <NA>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 getNodeSet 解析 XML - 识别缺失的标签 的相关文章

  • Quantmod 的简单功能不再起作用

    我明天要交论文 我收到了一条关于 quantmod 的非常奇怪的错误消息 这是我在过去几周使用这个包时从未遇到过的 我无法导入特定于道琼斯指数 DJI 的数据 我收到以下错误消息 getSymbols DJI src yahoo from
  • 使用officer R导出时如何提高ggplots的分辨率

    我想将图表导出到 PPT 并使用Officer 包来实现相同的目的 但是 图表的默认分辨率较低 我想更改它 我目前正在使用以下电话 ph with gg p1 type chart res 1200 其中 p1 是 ggplot 对象 运行
  • 我想在java中使用XQuery进行Xml处理

    我想用XQuery用于从 java 中的 Xml 获取数据 但我没有得到需要为此添加哪个 Jar 我在谷歌上搜索了很多 但没有得到任何有用的例子 例如我得到以下链接 https docs oracle com database 121 AD
  • R 中两个时间戳之间的左连接

    我的目标是执行左连接intervals哪里的bike id比赛和created at时间戳在records在 之间start and end in the intervals table gt class records 1 data ta
  • 当 contains() 工作正常时,xpath 函数ends-with() 工作时出现问题

    我正在尝试获取具有以特定 id 结尾的属性的标签 like span 我想获取 id 以 国家 地区 结尾的跨度我尝试以下xpath span ends with id Country 但我得到以下异常 需要命名空间管理器或 XsltCon
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • picker输入字体或背景颜色

    我在闪亮的仪表板中使用 pickerInput 这很好 除了一个问题 背景颜色和字体颜色太相似 使得过滤器选择难以阅读 有什么办法可以改变背景或字体颜色吗 如果可能的话 我想继续使用 pickerInput 但如果有一个带有 selectI
  • 如何在 R 中执行近似(模糊)名称匹配

    我有一个专门用于生物学期刊的大型数据集 该数据集是由不同的人长时间编写的 因此 数据不采用单一格式 例如 在 作者 栏中我可以找到John Smith Smith John Smith J等 但它们是同一个人 我连最简单的动作都做不了 例如
  • 多个动态滤镜更新闪亮

    我希望能够让 UI 输入闪亮 并根据用户之前的选择进行自我更新 因此 在下面的示例中 预期的行为是用户选择cyl vsor carb那么这将 过滤数据集mtcars用于创建绘图 即用户根据过滤条件调整绘图并 更新其他过滤器中的剩余输入选择
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • 如何在 R 中的 for 循环内将值存储在向量中

    我正在开始使用 R 但我对以下问题感到非常沮丧 我试图将 for 循环内完成的某些计算的值存储到我之前定义的向量中 问题是如何进行索引 因为for循环迭代代码的次数取决于用户的输入 所以变量i不一定要从1开始 它可以从80开始 for举个例
  • `dplyr::_join` 函数的命名向量“by”参数[重复]

    这个问题在这里已经有答案了 我正在写一个函数dplyr join两个数据框by不同的列 第一个数据帧的列名称动态指定为函数参数 我相信我需要使用rlang准引用 元编程 但未能找到可行的解决方案 我很感激任何建议 library dplyr
  • 将 XSD 文件转换为 C# 可序列化类

    我尝试遵循以下答案这个问题 https stackoverflow com questions 87621 how do i map xml to c objects 但无法让 xsd exe 愉快地获取 XSD 文件并将它们转换为类 此处
  • 如何使用XPath选择非空段落?

    我想要抓取的网页具有类似的结构 每个都有一个段落是一个问题 一个段落是一个答案 我想抓取每个问题和答案并将它们存储在两个项目中 问题是 在某些页面上 问题和答案分别是 xxx p 1 and xxx p 2 但在其他页面上 xxx p 1
  • PHP DOM - 剥离 span 标签,保留其内容

    我希望采用如下标记 span class test Some text that is strong bolded strong and contains a a href link a span 并在 PHP 中找到剥离跨度的最佳方法 剩
  • R - 重塑 - 熔化错误

    我正在尝试融化数据框 但出现了这个奇怪的错误 有什么想法吗 str zx7 data frame 519 obs of 5 variables calday new Date format 2011 01 03 2011 01 04 201
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • 如何在 MessageContract 类型中使用 XML 属性?

    前面的注释 我无法更改传入的 SOAP 请求的格式 因为它们是由国际标准固定的 weeeeeeeee 我有一个 SOAP 请求进入我的 WCF 服务 如下所示
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 我可以在 XSLT 中创建模板吗?

    我想使用 XSLT 从 XML 创建 ASP NET 用户控件 目前我真的把结果一点一点地拼凑起来

随机推荐

  • 数据表根据按钮单击事件隐藏和显示行

    所以我有这个由 php 动态生成的数据表 但是一旦加载 我不想重新加载整个表 因为我正在做的只有一个小的 javascript if 语句 当您按下按钮时 我会比较我的 tr 上的数据属性 如果不合适 我想隐藏它们 否则 我想展示它们 这是
  • 密码重置 django-allauth 和 django-rest-auth

    我无法解决这个问题 阅读了很多解决方案 但似乎找不到适合我的正确组合 我想从我的 android iOS 应用程序中启动用户密码重置流程 我想我需要django rest auth为此 要公开一个 API 端点 如下所示 from rest
  • 如何使用 data.table/dplyr 在两个层次结构中进行高效采样和替换?

    我正在尝试使用 data table tidyverse 在两个级别上进行有效采样 1 级是医院 ID hospital id 2 级是医生 ID doctor id 我需要首先从 N 总额中对替换 N 医院进行抽样 然后我需要从 M i
  • C# 将字符串复制到字节缓冲区

    我正在尝试将 Ascii 字符串复制到字节数组 但无法 如何 这是我迄今为止尝试过的两件事 两者都不起作用 public int GetString ref byte buffer int buflen string mystring he
  • Objective-C 中的遮罩视图

    In 动作脚本3我们可以将蒙版应用到视觉对象 如下所示 SomeVisualObject mask maskShapeObject 我怎样才能达到类似的结果Objective C 假设我有两个UIImageView对象 我想要这样的东西 i
  • POD全局对象初始化

    我今天被虫子咬了 问 C 律师的问题 让我们考虑以下来源 struct MyPod short m short const char const m string MyPod myArrayOfPod 1 Hello int main in
  • RxJava - 将列表的结果映射到另一个列表

    我想将列表中的每个对象转换为另一个对象 但这样做时我的代码坚持将它们转换回列表 override fun myFunction LiveData
  • 为什么我无法在 Mac OSX Lion 上安装 Ruby 1.9.2? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我尝试在装有 OSX Lion 10 7 2 的全新 MacBook Air 上安装 Ruby 1 9 2 但在安装过程中不断收到错误消息 我是 Ru
  • 是否有可以将 PNG 文件转换为 PDF 的 .NET 库?

    我有一个应用程序 需要将 PNG 文件即时转换为 PDF 现有的图书馆可以做到这一点吗 我希望 PDF 看起来与 PNG 完全一样 没有多余的边距 没有边框等 我正在使用 NET 4 0 编辑 我尝试了 iTextSharp 效果很好 这是
  • Sharepoint PeopleEditor:如何找出返回的用户/组类型?

    我有一个人物编辑器
  • 如何将键值元组数组转换为对象

    我有一个数组 cardType iDEBIT txnAmount 17 64 txnId 20181 txnType Purchase txnDate 2015 08 13 21 50 04 respCode 0 isoCode 0 aut
  • 在 Asp.net Identity MVC 5 中创建角色

    关于使用新的 Asp net 身份安全框架的文档非常少 我已经拼凑了我可以尝试创建一个新角色并向其中添加一个用户的内容 我尝试了以下方法 在 ASP NET Identity 中添加角色 https stackoverflow com qu
  • 使用 new Image() 时 JavaScript 中的内存泄漏

    我似乎有内存泄漏 是由于在 javascript 脚本中使用 new Image 引起的 如果我在 Windows 资源监视器中查看已使用的物理内存 我会在加载页面时获得预期的内存使用量增加 因为它使用以下方式加载一些相当大的图像 var
  • htaccess 重写 URL 不适用于 codeigniter 代码

    我正在尝试重写 URLS 以便 foo gt index php index php 由 codeigniter 3 提供支持 bar php 是一个独立的 php 文件 这是我的 htaccess 中的片段 Test 1 Bar php
  • 如何完美同步两个或多个html5视频标签?

    有没有办法让两个或更多 最好是三个 html5标签同时播放并完美同步 如果我有一个视频的三个图块 我希望它们作为一个大视频出现在浏览器中 他们需要成为完美同步 甚至没有最小的视觉 垂直提示表明它们是平铺的 不幸的是我无法使用 MediaCo
  • 有没有办法检查 NumPy 数组是否共享相同的数据?

    我的印象是 在 NumPy 中 两个数组可以共享相同的内存 举个例子 import numpy as np a np arange 27 b a reshape 3 3 3 a 0 5000 print b 0 0 0 5000 Some
  • 运行 Quartz.NET 嵌入式或作为 Windows 服务的优缺点

    我想将quartz调度添加到ASP NET应用程序中 它将用于发送排队的电子邮件 将quartz net 作为 Windows 服务运行与嵌入式相比有何优缺点 我主要关心的是嵌入模式下的 Quartz NET 如何处理 IIS 中可变数量的
  • VSCode - 保存时禁用所有自动格式化

    我正在编辑别人的代码 我只想更改 9000 行文件中的 1 行 但每次保存时 VS Code 都会格式化整个文件并删除所有尾随空格 这是一个禁忌 因为当我把它推上去时 审阅者将不知道该看哪一行 我尝试禁用 prettier 将所有文件添加到
  • iPhone + Drupal + JSON RPC 服务器问题

    我不知道如何使用 Obj C 发布 JSON RPC 请求 谁能帮我 到目前为止我有 responseData NSMutableData data retain NSMutableURLRequest request NSMutableU
  • 使用 getNodeSet 解析 XML - 识别缺失的标签

    我正在解析 XML 文件getNodeSet 假设我有一个来自书店的 XML 文件 其中列出了 4 本书 但其中一本书缺少 作者 标签 如果我使用以下方法解析 XML 中的标签 authors data nodes 2 lt getNode