- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 XML2
从在线 XML 文档中提取发布数据,例如 this一,使用此代码:
xF <- read_xml(target, encoding = "UTF-8") ## target = above link
获取每个发布节点存在的项目没有问题。
Titles <- xml_text(xml_find_all(xF, "//publication-base_uk:title", xml_ns(xF)))
Pub.Lang <- xml_text(xml_find_all(xF, "//publication-base_uk:language/core:term/core:localizedString", xml_ns(xF)))
## etc...
但是,我对如何获取并不总是有条目的项目感到困惑,例如同行评审标签。
Peer.Rev <- xml_text(xml_find_all(xF, "//extensions-core:peerReviewed", xml_ns(xF)))
为所有具有 peerReviewed 子标签的出版物返回一个值,但由于某些 peerReviewed 标签没有子标签,因此计数已关闭。有没有办法用 NA(或其他任何东西)代替缺失的文本值?
提前致谢。
最佳答案
使用 xml2::xml_find_first()
应该可以得到你想要的。
假设我们想要来自此 xml rss 提要的博客文章类别: https://eagereyes.org/feed .其中一些帖子只有一个类别,有些则不止一个。搜索一个就可以了:
feed <- "https://eagereyes.org/feed"
doc <- httr::GET(feed) %>% xml2::read_xml()
channel <- xml2::xml_find_all(doc, "channel")
site <- xml2::xml_find_all(channel, "item")
categories <- tibble::tibble(
category1 = xml2::xml_text(xml2::xml_find_all(site, "category[1]"))
)
> categories
# A tibble: 10 x 1
category1
<chr>
1 Papers
2 Blog 2017
3 Links
4 Blog 2017
5 Blog 2017
6 Talk
7 ISOTYPE Books
8 Techniques
9 Basics
10 Blog 2017
但是多次尝试这样做不会:
categories <- tibble::tibble(
category1 = xml2::xml_text(xml2::xml_find_all(site, "category[1]")),
category2 = xml2::xml_text(xml2::xml_find_all(site, "category[2]"))
)
Error: Column `category2` must be length 1 or 10, not 3
xml_find_first
拯救:
categories <- tibble::tibble(
category1 = xml2::xml_text(xml2::xml_find_first(site, "category[1]")),
category2 = xml2::xml_text(xml2::xml_find_first(site, "category[2]"))
)
> categories
# A tibble: 10 x 2
category1 category2
<chr> <chr>
1 Papers paper
2 Blog 2017 conference
3 Links <NA>
4 Blog 2017 <NA>
5 Blog 2017 <NA>
6 Talk <NA>
7 ISOTYPE Books isotype
8 Techniques <NA>
9 Basics <NA>
10 Blog 2017 <NA>
希望对您有所帮助。
关于xml - R & XML2 : Replace missing XML elements with NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33933030/
我正在从一个旧数据库中选择数据,该数据库有一个滥用状态列。状态列中包含多条信息。值如“新联系人 YYYY”、“在线 YYYY”、“更新 YYYY”、“撤回 YYYY”等……。您可能已经猜到了,YYYY
我想使用ant的replace任务替换这样的文件之一中的 token : 版本.txt version.number=${versionNumber} build.gradle task writeV
sorted_elems 列表中有一些元素将被更改为 str 例如: sorted_elems = ['[abc]', '[xyz]', ['qwe']] 我想删除定义的字符 - [, ], ' 并打
如果替换在变量中传递,第一次和第二次替换是否等效? #!/usr/bin/env perl6 use v6; my $foo = 'switch'; my $t1 = my $t2 = my $t3
我正在做一个本地测试来比较 C# 中 String 和 StringBuilder 的 Replace 操作性能,但是对于 String 我使用了以下代码: String str = "String
我看到了所有内容,没有看到使用“--replace”的方式的内容。 如何在 wkhtmltopdf 中使用“--replace”。 请给我一个例子,谢谢。:) 最佳答案 假设您有一个页脚 my_foo
我需要在 50 多个文件中进行大量搜索/替换,并且正在使用 Sublime Text 3。 有没有办法逐步执行并交互确认每个更改?我不想要只执行所有替换的一揽子“全部替换”操作。 我正在思考 vi/v
那么“replace ”属性如何与 composer 一起使用? ?我已经阅读了 Composer 文档,但仍然不明白。搜索更多信息并没有回答我的问题。 当我查看Laravel/Framework上的
我在玩 F# 句法。 在瑞典,我们有一个游戏叫做“Backslang”(谷歌翻译自“Rövarspråk”) 规则很简单。你说的所有话都必须以特定的方式说出来。虽然人声是相同的,但每个辅音都必须用“o
是否可以在Atom或Sublime Text中对“item”一词使用“查找和替换”并将其替换为“item [i]”,其中[i]是从1开始的数字? 我有一堆看起来像这样的物品: item1 item1
我不太确定如何解释,所以我将从输出开始。我需要返回这个: { replies: [ { type: 'text', content: 'one' } { type:
我是 C# 的新手,所以请原谅我的错误。 我想在每次调用该段代码时(每次调用 2-4 次)替换字符串的某些部分。我想知道哪种方法在性能方面更好:string.Replace 或 stringBuild
我了解.Replace() 和-replace 之间的区别,但是什么是-replace 和[Regex]: :替换()? 我测试了以下 2 个代码,但对我来说结果完全一样。 我还引用了 PowerSh
如果我正在做类似的事情: someString.Replace("abc","").Replace("def","").Replace(@"c:\Windows","") 我怎样才能把它替换成 Reg
我是 C# 的新手,所以请原谅我的错误。 我想在每次调用该段代码时(每次调用 2-4 次)替换字符串的某些部分。我想知道哪种方法在性能方面更好:string.Replace 或 stringBuild
当我使用 call() 或 apply() 时,我遇到了问题。 console.log(String.prototype.replace === String.replace);//false 我认为
在我使用 5-10 个替换的情况下是否有必要使用 stringbuilder。 String someData = "......"; someData = someData.replaceAll("
我有一个字符串,我需要用字典中的值替换其中的标记。它必须尽可能高效。使用 string.replace 进行循环只会消耗内存(记住,字符串是不可变的)。 StringBuilder.Replace()
我正在使用具有许多不同库依赖项的 gradle 项目并使用新的 list 合并。在我的 标签我已经这样设置了: .... 但我收到错误消息: /android/MyApp/app/src/main
我正在尝试从一个数据库中的表中提取模式并将其传输到另一个数据库。以下是执行此操作的函数的一部分。 当 Table( ... ) 时出错被称为。 功能示例: def transfer_data(self
我是一名优秀的程序员,十分优秀!