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

如何在Java中替换xml模板中的第n个出现?

严宸
2023-03-14

在这里,我与Java一起做自动化,与放心一起做宁静。因此,我想用模板中的空白字符串替换第二个

&

标记。

这里我附上了模板

<Request>    
    <P>
        <n>name1</n>
        <v>${value1}</v>
    </P>
    <P>
        <n>name2</n>
        <v>${value2}</v>
    </P> 
   <P>
        <n>name3</n>
        <v>value3</v>
    </P> 
</Request>

我正在使用下面的代码替换第2个

标记。但它被替换为所有

标记(第一个和最后一个

标记)

String request = exampleTemplate.replace("${value1}", "XYZ")
                .replace("<P>", "")
                .replace("<v>${value2}</v>", "1234")
                .replace("</P>", "")
                .replace("${value3}", "AAA");

如何只替换第2个

标记?请帮助我完成我的工作。

共有1个答案

柴深
2023-03-14

您可以将第一个

元素和第二个

元素匹配在一起。

String res = str.replace("${value1}", "XYZ")
                .replace("<v>${value2}</v>", "1234")
                .replace("${value3}", "AAA")
                .replaceFirst("(?s)(<P>.*?</P>\\s*)<P>(.*?)</P>", "$1$2");

演示

 类似资料:
  • 我希望输出保持xml元素数据中的空格不变,如下所示:

  • 问题内容: 我想在下面替换String的第一次出现。 **如果测试包含以下输入,则不应替换 请参阅评论,(末尾加空格) 看评论, 看评论** 我想获得如下输出, 提前致谢, 问题答案: 您可以使用String方法。

  • 编辑:我发现如果我向UnmarshallFromTemplate.docx添加一些文本并保存它,它不会替换新的文本行。-标记以某种方式拆分为多个标记: 编辑document.xml中的文本并添加缺少的信息没有多大帮助。 编辑2: 伙计们。我找到了一个非常适合自己的解决办法,不知道为什么花了这么长时间才弄明白。正如我所说的:运行在哪里分裂,原因是在我看来是${}。因此,我只是在占位符之前使用了一个#

  • 我有一些字符串,我想替换其中的一些字符。一切都很好,直到字符串没有两个或更多相同的字符,程序只是替换了第一个字符,而我无法更改第二个字符。 下面是对这段代码的解释:用户从一开始程序就有一个等于10的分数。userLetter它只是一个字符,它将从用户那里得到一些字母,然后如果语句检查movieTitle变量的字符是否等于用户刚刚输入的字符,如果是,charIndex将有它的位置(但它只包含第一个索

  • 我有一段代码,它是做模板专门化的常用模式。为了移除main函数第一行中为Processor1指定DataType1的要求,我想改为接收一个template模板参数。看起来using指令不支持分配“open”模板参数,而且我在web中找不到任何这样的示例(可能我没有使用适当的关键字进行搜索...) 所以问题很“简单”,我如何让这段代码编译呢?在FindDefaultProcessor中,使用type

  • 问题内容: 我想替换字符串中第n个出现的子字符串。 一定有什么我想做的事情是 最简单,最Python化的方法是什么? 为什么不重复: 我不想在这种方法中使用正则表达式,而我发现的类似问题的大多数答案只是正则表达式剥离或真正复杂的功能。我真的想要尽可能简单而不是正则表达式的解决方案。 问题答案: 我使用简单的函数,该函数列出所有出现的事件,选择第n个位置,并使用它将原始字符串分成两个子字符串。然后,