Java:从 XML 中的文本中删除 < 和 >(不是标签)
Java: remove < and > from text in XML (not tags)
我很难逃避 xml 被 Java 处理。我正在使用 JTidy 来转义不需要的字符,但很难从 <tag> capacity < 1000 </tag>
等值中删除“<”和“>”
我正在使用下面的代码来转义输入
public String CleanXML(String input){
Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-16");
tidy.setOutputEncoding("UTF-16");
tidy.setWraplen(Integer.MAX_VALUE);
tidy.setXmlOut(true);
tidy.setSmartIndent(true);
tidy.setXmlTags(true);
tidy.setMakeClean(true);
tidy.setForceOutput(true);
tidy.setQuiet(true);
tidy.setShowWarnings(false);
StringReader in = new StringReader(input);
StringWriter out = new StringWriter();
tidy.parse(in, out);
return out.toString();
}
如果要删除 XML 的标签终端,只需将其转换为映射并根据需要构建字符串,参考 XML to map in Java。
如果你想清理属性值,你可以迭代映射并清理它然后构建一个字符串或通过
将其重新转换为 XML
使用以下函数
private static final Pattern TAG_REGEX = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);
public String CleanXML(String input){
final Matcher matcher = TAG_REGEX.matcher(input);
while (matcher.find()) {
String value = matcher.group(1);
String valueReplace = value.replaceAll("[^a-zA-Z0-9\s]", "");
input.replace(value,valueReplace);
}
return input;
}
它使用正则表达式搜索来获取标签之间的值,然后删除所有非字母数字字符。正则表达式和基本思想是从 Java regex to extract text between tags
中获得的
我很难逃避 xml 被 Java 处理。我正在使用 JTidy 来转义不需要的字符,但很难从 <tag> capacity < 1000 </tag>
我正在使用下面的代码来转义输入
public String CleanXML(String input){
Tidy tidy = new Tidy();
tidy.setInputEncoding("UTF-16");
tidy.setOutputEncoding("UTF-16");
tidy.setWraplen(Integer.MAX_VALUE);
tidy.setXmlOut(true);
tidy.setSmartIndent(true);
tidy.setXmlTags(true);
tidy.setMakeClean(true);
tidy.setForceOutput(true);
tidy.setQuiet(true);
tidy.setShowWarnings(false);
StringReader in = new StringReader(input);
StringWriter out = new StringWriter();
tidy.parse(in, out);
return out.toString();
}
如果要删除 XML 的标签终端,只需将其转换为映射并根据需要构建字符串,参考 XML to map in Java。
如果你想清理属性值,你可以迭代映射并清理它然后构建一个字符串或通过
使用以下函数
private static final Pattern TAG_REGEX = Pattern.compile("<tag>(.+?)</tag>", Pattern.DOTALL);
public String CleanXML(String input){
final Matcher matcher = TAG_REGEX.matcher(input);
while (matcher.find()) {
String value = matcher.group(1);
String valueReplace = value.replaceAll("[^a-zA-Z0-9\s]", "");
input.replace(value,valueReplace);
}
return input;
}
它使用正则表达式搜索来获取标签之间的值,然后删除所有非字母数字字符。正则表达式和基本思想是从 Java regex to extract text between tags
中获得的