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

How to replace nth occurrence in the xml template in Java?

这里我用Java做自动化,从容与放心。 所以我想用空字符串替换第二个 <p> & </p> 标签。

这里附上模板

<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>

我正在使用以下代码替换第二个 <p></p> 标签。但它被替换了所有 <p> &</p> 标签(第一个和最后一个 <p> & </p> 标签也)

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

如何只替换第二个 <p></p> 标签?

您可以同时匹配第一个和第二个 <p> 元素。

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

Demo