当前位置: 首页 > 知识库问答 >
问题:

如何删除docx4j中具有特定内容的行

厍书
2023-03-14

我想删除docx中的一个特定行,如果它有一个特定的词,比如“杀手”。

我如何使用Docx4j编写程序?如果我用空数据替换它,行将仍然在那里。我想把整条线移除。我试过这样的东西,

private void replacePlaceholders(WordprocessingMLPackage targetDocument,
            String nameOfTheInvitedGuest) throws JAXBException {

        List<Object> texts = targetDocument.getMainDocumentPart()
                .getJAXBNodesViaXPath(XPATH_TO_SELECT_TEXT_NODES, true);

        System.out.println(texts.size());
        Iterator<Object> itr = texts.iterator();

        while (itr.hasNext()) {
            Object obj = itr.next();

            Text text = (Text) ((JAXBElement) obj).getValue();

            // System.out.println(text.getValue());

            if (text.getValue().contains("Hulk Hogan")) {
                itr.remove();
            }

            else {
                String textValue = replacePlaceholderOfInvitedGuestWithGivenName(
                        nameOfTheInvitedGuest, text.getValue());

                for (Object key : templateProperties.keySet()) {
                    textValue = textValue.replaceAll("\\$\\{" + key + "\\}",
                            (String) templateProperties.get(key));
                }

                text.setValue(textValue);
            }


        } 

        System.out.println(texts.size());
    }

但它仍然显示在docx文件中。

共有1个答案

陈知
2023-03-14

docx文件中的text元素具有父元素。文本将驻留在run中,而run又将驻留在块元素中,如段落(P节点)或表单元格中。如果您希望根据文本内容删除特定的块元素,那么一旦找到了相关的文本元素,就需要向上移动父元素,并将它们也删除--例如,如果最终的父元素是段落节点,则删除该元素。

如果说,一个段落在Word中显示为3行,而你试图删除该段落中的第二行,那么你就有了一个不同的、更具挑战性的问题。

 类似资料:
  • 问题内容: 我要删除所有密钥。我希望一切都消灭,然后给我一个空白的数据库。 有没有办法在Redis客户端中做到这一点? 问题答案: 使用redis-cli: FLUSHDB –从连接的当前数据库中删除所有密钥。 FLUSHALL –从所有数据库中删除所有键。 例如,在您的shell中:

  • 另外,我得到了一个未来的警告“pandas.np模块已被弃用,并将在未来的版本中从pandas中删除。直接导入numpy。另外,值错误可以追溯

  • 我有一个如下字符串 如何删除第二个字符

  • 本文向大家介绍如何从C ++ STL向量中删除具有特定值的项?,包括了如何从C ++ STL向量中删除具有特定值的项?的使用技巧和注意事项,需要的朋友参考一下 擦除功能用于从C ++ STL向量中删除具有特定值的项。 算法 范例程式码 输出结果

  • 如何(使用PHP)从具有特定类的div中删除样式属性?因为“拖累” 我知道我可以在“拖动”后用JavaScript删除样式属性

  • 我使用php删除文件夹包含删除的帖子的图像。我正在使用下面的代码,我在网上找到的,做得很好。 我想知道当文件夹中有其他文件夹时,如何仅删除文件夹中的特定文件夹。 当我使用下面的代码时,如何做到这一点?使用:/dev/images/norman/8-