我正在使用EverNote输出的HTML,需要解析以下内容:
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,需要解析以下内容:注释标题注释锚点(注释本身的超链接身份)注释创建...这是如何完成的?