如何替换字符串中的 XML 标签? (同时检查它是否以 xml 标签开头)

How to replace XML tag in String? (also checking if it starts with xml tag)

  1. 我需要替换字符串中的 XML 标签。问题是有些回复一开始并没有给我 XML 标签 <?xml version="1.0" encoding="UTF-8"?> 而有些回复 做。
  2. 有回复,有大小写字母。因此,如果我匹配 String.replace() 它会忽略它。
  3. 我需要向该响应添加 XLS 标记。 (目前工作)

响应 1. 开头没有 XML 标签

<records>
  <message>Something was found</message>
</records>

响应 2. 带有 XML 标签(来自另一个服务)

<?xml version="1.0" encoding="UTF-8"?>
<records>
  <message>Nothing found</message>
</records>

响应 3. 带有 XML 标签(小写 utf-8)

<?xml version="1.0" encoding="utf-8"?>
<records>
  <message>Nothing found</message>
</records>

当我添加 XLS 标签时,最终产品需要如下所示:

<?xml-stylesheet type="text/xsl" href="C:\Template.xsl"?>
<?xml version="1.0" encoding="UTF-8"?>
<records>
  <message>Nothing found</message>
</records>

目前我正在使用String.replace(),并匹配

String xlsSchema = "<?xml-stylesheet type=\"text/xsl\" href=\"" + template.getAbsolutePath() + "\"?>";
String replacable = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
String finalTags = replacable  + xlsSchema;
result = integrationResponse.replace(replacable, finalTags);

有什么方法可以创建以下表达式吗? 如果它 以 OR 开头包含 "<?xml" 标签,则仅在其前面添加 XLS,如果 !contains,则添加 XLS架构 + XML 标签?

已解决!

您可以像这样将 integrationResponse 更改为大写:

result = integrationResponse.toUppercase().replace(replacable.toUppercase(),finalTags);
result_ = result.toLowerCase() ;

已解决! 这个 /w regex.

String xlsSchema = "<?xml-stylesheet type=\"text/xsl\" href=\"" + template.getAbsolutePath() + "\"?>";
String newTag = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
String tag = "<?xml";
String strippedXML = "";

// Remove all XML tags from beginning
if (integrationResponse.toLowerCase().contains(tag)) {
    strippedXML = integrationResponse.replaceAll("<\?[^>]*\?>", "");
    result = newTag + xlsSchema + strippedXML;
}
else 
    result = newTag + xlsSchema + integrationResponse;