Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何使用xml2排除节点_R_Xml_Xpath_Xml2 - Fatal编程技术网

R 如何使用xml2排除节点

R 如何使用xml2排除节点,r,xml,xpath,xml2,R,Xml,Xpath,Xml2,在过去的几天里,我四处搜索,发现在XPathV2中可以使用'except'操作符,但还没有弄清楚xml2如何处理这个问题 这个链接有点像我想做的,但这是XPath特有的,我正在尝试对节点进行全面排除 例如,我的测试文档是一个.docx,我解压缩并阅读它。它有正文和表格。我想阅读所有正文,除了表格中的任何内容。我两个都能读,但我不知道如何排除所有的w:tbl。任何不或除之外的操作员似乎都不工作 使用xml\u find\u all它可以毫无例外地抓取这些节点中的任何内容 bodytext <

在过去的几天里,我四处搜索,发现在XPathV2中可以使用'except'操作符,但还没有弄清楚xml2如何处理这个问题

这个链接有点像我想做的,但这是XPath特有的,我正在尝试对节点进行全面排除

例如,我的测试文档是一个
.docx
,我解压缩并阅读它。它有正文和表格。我想阅读所有正文,除了表格中的任何内容。我两个都能读,但我不知道如何排除所有的
w:tbl
。任何
之外的操作员似乎都不工作

使用
xml\u find\u all
它可以毫无例外地抓取这些节点中的任何内容

bodytext <- xml2::xml_find_all(doc, "//w:p")
tabletext <- xml2::xml_find_all(doc, "//w:tbl")

bodytext这里您正在查询所有现有的
w:p
,但是
w:tbl
包含
w:p
的实例-以下仅选择位于body中的段落:

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
doc\u索引内容\u类型样式\u名称文本级别num\u id
1第1段不适用
2第2段标题1目录不适用
3第3段不适用
4第4段标题2不适用

尽管名称中的thre是一个“2”,但libxml2没有实现XPath 2.0标准。它只实现XPath1.0,请参阅。如果您想要XPath 2.0:请参阅2013年的答案:请发布一个相关的docx xml示例,以帮助我们。您可以使用xpath的方括号
[…]
我得到了一个错误:“尝试应用非函数。”但是,我删除了“doc$doc_obj$get()”并且它可以工作。非常感谢,现在看看节点子结构是如何工作的。还有那个军官:docx_摘要真是太棒了。这可能会更好。谢谢