【问题标题】:Checking if a string is valid tag/attribute name for a XML document检查字符串是否是 XML 文档的有效标签/属性名称
【发布时间】:2011-11-08 11:48:18
【问题描述】:

场景

我需要编写一个验证 XML 标记名称(或属性名称)的验证函数。

例如:

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

如果一个字符串无效,我应该转义使其无效,并用一些任意字符替换它们(或删除它)。

例如:

  • "d<iv" 无效 -> 我将其替换为 "div"

这些函数会被大量调用——所以我需要考虑代码有效性

我的问题

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

谢谢!

【问题讨论】:

    标签: java xml regex


    【解决方案1】:

    规则在 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,那么它是稍微复杂一点(需要更多魔法)

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多