如何替换字符串中的 XML 标签? (同时检查它是否以 xml 标签开头)
How to replace XML tag in String? (also checking if it starts with xml tag)
- 我需要替换字符串中的 XML 标签。问题是有些回复一开始并没有给我 XML 标签
<?xml version="1.0" encoding="UTF-8"?>
而有些回复
做。
- 有回复,有大小写字母。因此,如果我匹配 String.replace() 它会忽略它。
- 我需要向该响应添加 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);
- 'replacable' 的问题是一些回复给我大写字母和一些小写字母。使用
.toUppercase() || .toLowerCase()
不是一个选项,因为它会影响所有 xml 响应。
有什么方法可以创建以下表达式吗?
如果它 以 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;
- 我需要替换字符串中的 XML 标签。问题是有些回复一开始并没有给我 XML 标签
<?xml version="1.0" encoding="UTF-8"?>
而有些回复 做。 - 有回复,有大小写字母。因此,如果我匹配 String.replace() 它会忽略它。
- 我需要向该响应添加 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);
- 'replacable' 的问题是一些回复给我大写字母和一些小写字母。使用
.toUppercase() || .toLowerCase()
不是一个选项,因为它会影响所有 xml 响应。
有什么方法可以创建以下表达式吗?
如果它 以 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;