如何根据[r]中的NOT条件解析HTML / XML标记>> [

问题描述 投票:-1回答:1
最亲密的StackOverflow伙伴,

我正在使用EverNote输出的HTML,需要解析以下内容:

    注释标题
  • 注释锚(注释本身的超链接身份)
  • 注释创建日期
  • 注释内容,和
  • 笔记本内超链接(笔记内容中的链接到另一个笔记的锚点)
  • 根据[r] XML程序包的作者examples by Duncan Temple LangSO answer by @jdharrison,我已经能够相对轻松地解析注释标题,注释锚点和注释创建日期。对于那些可能感兴趣的人,这样做的命令是

require("XML") rawHTML <- paste(readLines("EverNotebook.html"), collapse="\n") #Yes... this is noob code doc = htmlTreeParse(rawHTML,useInternalNodes=T) #Get Note Titles html.titles<-xpathApply(doc, "//h1", xmlValue) #Get Note Title Anchors html.tAnchors<-xpathApply(doc, "//a[@name]", xmlGetAttr, "name") #Get Note Creation Date html.Dates<-xpathApply(doc, "//table[@bgcolor]/tr/td/i", xmlValue)

这里是示例HTML EverNote导出的fiddle

我在解析

1。注释内容

2。笔记本内超链接仔细看一下代码,很明显,第一部分的解决方案是返回每个最上层的* div,该div

不包括

包括一个具有属性bgcolor =“#D4DDE5的表”。 这是如何完成的?
Duncan说可以根据NOT条件使用XPath解析XML:

“它允许我们表达诸如“找到所有名为a的节点”或“找到没有命名为b的属性的所有命名为a的节点”或“具有等于'bob'的属性b的节点a”之类的东西。或“找到具有c的所有节点a作为>祖先节点”

但是他没有继续描述XML包如何解析例外...所以我被困在那里。

解决第二部分,考虑同一笔记本中其他笔记的锚点格式:

<a href="#13178">

这些目标旨在获得其编号,但是这很困难,因为它们仅通过#前缀与www链接区分开。关于如何通过对它们的值进行部分匹配(在这种情况下为#)来解析这些特定锚点的信息很少-甚至可能需要grep()。 

[如何使用XML包解析这些特殊的hrefs?

我在这里描述了这两个问题,因为第一部分的解决方案可能对第二部分有所帮助...但是也许我错了。 有任何建议吗?

UPDATE 1

按照最上面的div,我想说最外面的div。 EverNote HMTL导出中每个注释的内容都位于DOM最外部的div中。因此,感兴趣的是

返回不包含具有属性bgcolor =“#D4DDE5。”的表的每个最外面的div。“

最亲爱的StackOverflow朋友,我正在使用EverNote输出的HTML,需要解析以下内容:注释标题注释锚点(注释本身的超链接身份)注释创建...
html r xpath xml-parsing
1个回答
1
投票
“ ....以返回不包含属性为bgcolor =”#D4DDE5的表的每个最上面的div。“
这是如何完成的?
© www.soinside.com 2019 - 2024. All rights reserved.