2011-09-01 80 views
2

方案检查如果一个字符串是一个XML文档

我需要编写验证XML标签名称的验证函数(或属性名称)有效的标签/属性名称。

例如:

  • "div"有效
  • "d<iv"无效
  • "d\iv"无效

如果字符串是无效的,我应该逃避,使得它无效,并用一些任意字符替换它们(或删除它)。

例如:

  • "d<iv"是无效的 - >我"div"更换。

这些功能将被大量调用 - 所以我需要考虑代码有效性

我的问题(一个或多个)

  • 什么是描述一个有效的XML标签的规则/属性的名字吗?考虑用与java变量名相同的规则来描述有效的XML标记/属性是否安全?或者这些规则是否过于严格?
  • 我应该使用java正则表达式包还是应该编写自己的专用方法? (正如我所说速度很重要)。
  • 你有什么建议吗?

谢谢!

回答

3

的规则是在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这样的非法标签,那么它会更复杂一些(需要更多的魔法)

相关问题