用于从XML标记中删除无效空白的Java 8函数
我正在尝试执行数据迁移练习,将一系列XML文件加载到新格式。我发现的问题是,遗留应用程序生成的XML带有无效标记,即一些标记包含空格,例如:用于从XML标记中删除无效空白的Java 8函数,java,xml,java-8,tags,Java,Xml,Java 8,Tags,我正在尝试执行数据迁移练习,将一系列XML文件加载到新格式。我发现的问题是,遗留应用程序生成的XML带有无效标记,即一些标记包含空格,例如: <Serial>0001</Serial> <Document ID>12345</Document ID> <Document Type>TypeA</Document Type> 0001 12345 A型 不幸的是,遗留系统中没有人员资源来纠正XML,所以我唯一的选择是在处理
<Serial>0001</Serial>
<Document ID>12345</Document ID>
<Document Type>TypeA</Document Type>
0001
12345
A型
不幸的是,遗留系统中没有人员资源来纠正XML,所以我唯一的选择是在处理数据时修复它
有人能用一种简洁的方法来使用Java8删除XML标记中的空白,使它们能够有效地进行解析吗
我最初提取XML的代码是
final XmlMapper xmlMapper = new XmlMapper();
final JsonNode jsonNode = xmlMapper.readTree(metadata);
return objectMapper.convertValue(jsonNode, new TypeReference<Map<String, String>>()
final XmlMapper XmlMapper=new XmlMapper();
final JsonNode JsonNode=xmlMapper.readTree(元数据);
返回objectMapper.convertValue(jsonNode,newTypeReference()
非常感谢这不是特定于Java8的解决方案,但它满足了您的要求。 将整个XML作为字符串,它使用模式匹配来标识XML标记,并删除其中的任何空格字符。最后,
correctXmlString
具有有效的XML标记
String wrongXmlString = <Document ID>12345</Document ID>;
// Regex for matching xml tags
Matcher matcher = Pattern.compile("<[^>]+>").matcher(str);
// String builder for creating the correct XML.
StringBuffer xmlBuilder = new StringBuffer();
while (matcher.find())
{
// for every string match (i.e., for each tag)
String tag = matcher.group();
// remove any spaces and append the correct string
matcher.appendReplacement(xmlBuilder, tag.replaceAll(" +", ""));
}
matcher.appendTail(xmlBuilder);
String correctXmlString = xmlBuilder.toString();
String错误xmlstring=12345;
//用于匹配xml标记的正则表达式
Matcher Matcher=Pattern.compile(“]+>”).Matcher(str);
//用于创建正确XML的字符串生成器。
StringBuffer xmlBuilder=新的StringBuffer();
while(matcher.find())
{
//对于每个字符串匹配(即,对于每个标记)
String tag=matcher.group();
//删除所有空格并附加正确的字符串
appendReplacement(xmlBuilder,tag.replaceAll(“+”,”);
}
appendTail(xmlBuilder);
String correctXmlString=xmlBuilder.toString();
值得一看TagSoup或validator.nu等实用程序是如何使用它的;它们有时能很好地修复糟糕的XML,有时却不能。