我正在从PubMed Central解析XML文档,有时我会找到嵌套表的段落,如下例所示。 R中有没有办法获取文本并排除表格?
doc <- xmlParse("<sec><p>Text</p>
<p><em>More</em> text<table>
<tr><td>SKIP</td><td>this</td></tr>
</table></p>
</sec>")
xpathSApply(doc, "//sec/p", xmlValue)
[1] "Text" "More textSKIPthis"
我想返回没有嵌套表行的段落。
[1] "Text" "More text"
答案 0 :(得分:3)
您可以删除不需要的节点。在此示例中,我删除了XPATH //sec/p/table
library(XML)
doc <- xmlParse("<sec><p>Text</p>
<p>More text<table>
<tr><td>SKIP</td><td>this</td></tr>
</table></p>
</sec>")
xpathSApply(doc, "//sec/p/table", removeNodes)
xpathSApply(doc, "//sec/p", xmlValue)
[1] "Text" "More text"
如果您想保持doc
完整,您还可以考虑:
library(XML)
doc <- xmlParse("<sec><p>Text</p>
<p>More text<table>
<tr><td>SKIP</td><td>this</td></tr>
</table></p>
</sec>")
> xpathSApply(doc, "//sec/p/node()[not(self::table)]", xmlValue)
[1] "Text" "More text"
或简单地说:
xpathSApply(doc, "//sec/p/text()", xmlValue)
[1] "Text" "More text"
哪个最好取决于你的现实案例的复杂性。