繁体   English   中英

R&XML2:用NA替换缺少的XML元素

[英]R & XML2: Replace missing XML elements with NA

我使用XML2拉公布的数据进行在线XML文档,像这样一个,使用此代码:

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 feed中的博客帖子类别: 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>

希望有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM