在Java中生成有效的XML名称

时间:2010-08-17 13:32:16

标签: java xml

是否有任何帮助器将字符串转换/转义为有效的XML名称?

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

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

这显然不是一个有效的名称,是否有一些辅助方法可以将字符串转换为有效的xml名称?

(为了比较,.NET有一些上面的xml片段的方法:

 <max_x028_OfAll_x028_>SomeText</<max_x028_OfAll_x028_>)

4 个答案:

答案 0 :(得分:2)

.NET示例中的编码类似于ISO9075中定义的编码。我认为jdk中没有内置实现,但是这种编码也被alfresco或jackrabbit等内容存储库用于xml导入/导出和查询apis。快速搜索发现了这两个实现,两者都在开源许可下提供:

答案 1 :(得分:0)

在apache commons-lang项目中,可能在其他情况下使用的一个类是StringEscapeUtils。它可以转义用于XML文档的文本,我不知道有什么可以逃避XML元素名称。

你能不能生成更具可读性的东西,比如

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

有很多库可用于对xml进行编组/解组对象,包括JAXB(JDK的一部分),JiBXCastorXStream

答案 2 :(得分:0)

我不知道有任何帮助方法,但这里的规则http://www.w3.org/TR/REC-xml/#NT-Name非常简单,因此应该很容易实现。

答案 3 :(得分:0)

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

为了记录,你正在做的事情经常被称为“名称修改”。