我从注释处理器中的Java注释中获取一些值来生成元数据。其中一些值应该表示XML元素或属性名称。我想根据XML规范验证输入以确定提供的值是否实际上是合法的NCNames。在这种情况下,只有本地名称很重要,名称空间URI在这里不起作用。
是否有一些简单的方法可以找出字符串是否是合法的XML元素或属性名称?我最好使用一些在Java SE中可用的XML API。我首先要做的就是削减依赖关系的原因之一。我正在使用JDK 7,因此我可以访问最新的类/方法。
到目前为止,浏览内容处理程序类和SAX / DOM的东西并没有产生任何结果。
答案 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)下使用,并且包含漂亮而干净的代码。