用占位符文本替换 XML 个文件中的文本

Replace Text in XML files with placeholder text

我对现在准备发布的文件进行了文本挖掘。有几个 XML 文件在段中包含文本(请参见下面的基本示例)。由于版权限制,我必须确保我要发布的文件不包含完整的文本,而有文本的人应该能够 'reconstruct' 文件。为了确保仍然可以执行基本的文本挖掘(= 计算长度),段长度不应更改。因此,我正在寻找一种方法,用虚拟/占位符文本替换所有段中除第一个和最后一个单词之外的每个单词。

基本示例:

输入:

<text>
<div>
<seg xml:id="A">Lorem ipsum dolor sit amet</seg>
<seg xml:id="B">sed diam nonumy eirmod tempor invidunt</seg>
</div>
</text>

输出:

<text>
<div>
<seg xml:id="A">Lorem blank blank blank amet</seg>
<seg xml:id="B">sed blank blank blank blank invidunt</seg>
</div>
</text>

rapply递归替换嵌套列表中的值:

假设 data.xml 包含您的输入。

library(tidyverse)
library(xml2)

read_xml("data.xml") %>%
  as_list() %>%
  rapply(how = "replace", function(x) {
    tokens <-
      x %>%
      str_split(" ") %>%
      simplify()
    
    n_tokens <- length(tokens)
    
    c(
      tokens[[1]],
      rep("blank", n_tokens - 2),
      tokens[[n_tokens]]
    ) %>%
      paste0(collapse = " ")
  }) %>%
  as_xml_document() %>%
  write_xml("data2.xml")

输出文件data2.xml:

<?xml version="1.0" encoding="UTF-8"?>
<text>
  <div>
    <seg id="A">Lorem blank blank blank amet</seg>
    <seg id="B">sed blank blank blank blank invidunt</seg>
  </div>
</text>