场景
我需要编写一个验证函数来验证 XML 标记名称(或属性名称)。
例如:
-
"div"
有效 -
"d<iv"
无效 -
"d\iv"
无效
如果字符串无效,我应该转义,使其无效,并用一些任意字符替换它们(或删除它)。
例如:
-
"d<iv"
无效 -> 我将其替换为"div"
.
这些函数将被大量调用 - 因此我需要考虑代码有效性。
我的问题
- 描述有效 XML 标记/属性名称的规则是什么?考虑使用与 java 变量名称相同的规则来描述有效的 XML 标记/属性是否安全?或者这些规则是否过于严格?
- 我应该使用 java regex 包还是应该编写自己的专用方法? (正如我所说,速度很重要)。
- 您有什么建议吗?
谢谢!
最佳答案
规则在 xml 规范中定义(查看 name 定义)
如果速度很重要,那么就不要使用正则表达式。更像这样:
public static String correctName(String name) {
StringBuilder nameBuilder = new StringBuilder();
for (char nameChar:name.charArray())
if (isValidXml(nameChar)) // some magic left to do ;)
nameBuilder.append(nameChar);
return nameBuilder.toString();
}
注意 - 上面的代码是一个简单的指南,它没有涵盖 xml 名称的第一个字符具有不同值范围的小烦恼......如果您想纠正像 $% 这样的非法标签&div
那么它有点复杂(需要更多魔法)
关于java - 检查字符串是否是 XML 文档的有效标记/属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272253/