过去几天我一直在寻找,我在XPath v2中看到你可以使用'除了'运营商,但是还没有能够弄清楚xml2如何处理这个问题。
这个链接有点像我想要做的,但这是XPath特有的,我试图全面排除节点like in this SO answer。
例如,我的测试文档是.docx
,我解压缩并阅读。它有正文和表格。我想阅读所有正文,除了表格中的任何内容。我可以阅读两者,但我无法弄清楚如何排除所有w:tbl
。任何not
或except
运营商似乎都无法运作。
使用xml_find_all
,它会毫无例外地擦除这些节点中的任何内容。
bodytext <- xml2::xml_find_all(doc, "//w:p")
tabletext <- xml2::xml_find_all(doc, "//w:tbl")
答案 0 :(得分:1)
您在此处查询所有现有w:p
,但w:tbl
包含w:p
的实例 - 以下仅选择位于正文中的段落:
xml2::xml_find_all(doc, "//w:body/w:p")
请注意,要浏览docx的内容,您可以使用officer::docx_summary(officer::read_docx('/path/to/document.docx'))
来返回包含内容,索引等的data.frame,如下所示。
doc_index content_type style_name text level num_id
1 1 paragraph <NA> NA NA
2 2 paragraph heading 1 Table of content NA NA
3 3 paragraph <NA> NA NA
4 4 paragraph heading 2 dataset iris NA NA