在Java中生成有效的XML名称

在Java中生成有效的XML名称,java,xml,Java,Xml,是否有任何帮助程序可以将字符串转换/转义为有效的XML名称 例如,我有字符串max(of all),需要生成一些XML,例如 <max(OfAll)>SomeText</<max(OfAll)> SomeText在其他情况下可能会用到的一个类是apachecommons-lang项目。它可以转义XML文档中使用的文本,但我不知道有什么可以转义XML元素名称 你能不能生成一些更可读的东西,比如 <aggregation type="max(OfAll)">

是否有任何帮助程序可以将字符串转换/转义为有效的XML名称

例如,我有字符串
max(of all)
,需要生成一些XML,例如

<max(OfAll)>SomeText</<max(OfAll)>

SomeText在其他情况下可能会用到的一个类是apachecommons-lang项目。它可以转义XML文档中使用的文本,但我不知道有什么可以转义XML元素名称

你能不能生成一些更可读的东西,比如

<aggregation type="max(OfAll)">SomeText</aggregation>

(JDK的一部分),,

我不知道有任何帮助器方法,但是这里的规则非常简单,所以应该很容易实现一个。您的.NET示例中的编码与ISO9075中定义的编码类似。我认为jdk中没有内置的实现,但alfresco或jackrabbit等内容存储库也使用这种编码进行xml导入/导出和查询API。快速搜索发现了这两个实现,它们都在开源许可证下可用:


应该清楚,正常的XML转义(用字符实体替换不合适的字符)不会产生有效的XML标识符

记录在案,你所做的经常被称为“名称弄乱”

<aggregation type="max(OfAll)">SomeText</aggregation>