java如何检查字符串是否是有效的XML元素名?
您知道java中的函数吗?该函数将验证字符串是否是一个好的XML元素名
表格W3学校:
XML elements must follow these naming rules:
- Names can contain letters, numbers, and other characters
- Names cannot start with a number or punctuation character
- Names cannot start with the letters xml (or XML, or Xml, etc)
- Names cannot contain spaces
我还发现了其他提供正则表达式解决方案的问题,难道没有一个函数可以做到这一点吗
# 1 楼答案
规范中的相关产品为http://www.w3.org/TR/xml/#NT-Name
所以一个与之匹配的正则表达式是
如果你想处理有名称空间的名字,你需要确保最多有一个冒号,所以
(错过了另一个03gf;两个都改为036f)
# 2 楼答案
作为对accepted answer的当前添加:
至少Oracle的JDK 1.8(可能也是旧版本)在非公共
com.sun.*
包中内部使用Xerces解析器。您不应该直接使用这些类的任何实现,因为它们可能会在未来版本的JDK中更改,而无需另行通知!但是,xml元素名称有效性检查所需的代码封装得非常好,可以复制到您自己的代码中。这样,就可以避免对外部库的另一种依赖这是从内部类
com.sun.org.apache.xerces.internal.util.XMLChar
获取的必需代码:# 3 楼答案
如果您使用的是Xerces XML解析器,那么可以使用XMLChar(或XML11Char)类^{} method ,如下所示:
还有
isValidName
的样本代码available here# 4 楼答案
使用组织。阿帕奇。xerces utilities是一个不错的选择;但是,如果您需要坚持使用标准Java API中的Java代码,那么下面的代码可以做到这一点: