在Java中验证XML NCName

时间:2011-09-29 18:32:04

标签: java xml validation

我从注释处理器中的Java注释中获取一些值来生成元数据。其中一些值应该表示XML元素或属性名称。我想根据XML规范验证输入以确定提供的值是否实际上是合法的NCNames。在这种情况下,只有本地名称很重要,名称空间URI在这里不起作用。

是否有一些简单的方法可以找出字符串是否是合法的XML元素或属性名称?我最好使用一些在Java SE中可用的XML API。我首先要做的就是削减依赖关系的原因之一。我正在使用JDK 7,因此我可以访问最新的类/方法。

到目前为止,浏览内容处理程序类和SAX / DOM的东西并没有产生任何结果。

3 个答案:

答案 0 :(得分:3)

如果你准备在课程路径上安装撒克逊人,你可以做到

new Name10Checker()。isValidNCName(s);

我在公共JDK界面中看不到任何简单的东西。

答案 1 :(得分:2)

在任何jdk 6 API中都找不到任何直接的东西(不知道jdk 7)。一种快速但可能是“hackish”的检查方法是将其转换为xml文档并查看它是否解析:

String name = ...;
if(name.contains(">")) {
  return false;
}
String xmlDoc = "<" + name + "/>";
DocumentBuilder db = ...;
db.parse(new InputSource(new StringReader(xmlDoc)));

答案 2 :(得分:2)

我遇到了同样的问题,发现了大量的实现在僵尸库中,甚至是Java类库中的旧实现,很久以前就被删除了......所以这里有几个选项可供选择:

所以,如果你正在使用这些库中的一个,那你就没事了。

由于我不是,我将使用OWL API中的XMLUtils副本,它没有外部依赖性,可以在非限制性许可证(LGPL和Apache 2.0)下使用,并且包含漂亮而干净的代码。