R XML从同一节点选择2个属性xmlAttrs()

时间:2014-01-23 21:10:08

标签: xml r

进一步研究TEI。这是我的XML Tei文件,包含" date"具有不同属性的节点(when,from,to)。 我成功地提取了"当"属性bu使用

dateWhen<-unlist(xpathApply(doc, '//date', xmlGetAttr,"when"))

但现在我想从&#34;中提取&#34;的值。和&#34;到&#34;属性同时和xmlGetAttr不具有多个属性。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="parser.xsl" type="text/xsl"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
   <teiHeader>
      <fileDesc>
      </fileDesc>
   </teiHeader>
   <text>
       <body>
           <p><date when="1715-01-07">Du 7e  Janvier.</date> Un ambassadeur extraordinaire du roi.</p>
           <p><date from="1715-12-13" to="1715-12-27">Dudit mois de décembre</date> Quelque temps avant la fin du mois</p>
       </body>
   </text>
</TEI>

我试过这个

dateFromTo<-unlist(xpathApply(doc, '//date', xmlAttrs,c("from","to")))

但我采用了日期节点的所有属性

这也没有用

frames<-getNodeSet(doc, '//date')
dateFromTo<-xmlAttrs(frames[[1]]) [c('from','to')]

带有NULL响应

有人能伸出援助之手吗?感谢

1 个答案:

答案 0 :(得分:1)

你不能做这样的事吗

sapply(c("when","from"), function(x) xpathSApply(doc, '//date', xmlGetAttr, x))

对于可重现的示例,我将使用xml格式的PLOS One文章。

library(XML)
doc <- xmlParse("http://www.plosone.org/article/fetchObjectAttachment.action?uri=info%3Adoi%2F10.1371%2Fjournal.pone.0084312&representation=XML")
sapply(c("contrib-type","xlink:type"), function(x) xpathSApply(doc, '//contrib', xmlGetAttr, x))

    contrib-type xlink:type
[1,] "author"     "simple"  
[2,] "author"     "simple"  
[3,] "author"     "simple"  
[4,] "author"     "simple"  
[5,] "author"     "simple"  
[6,] "editor"     "simple"