Java中如何从字符串值生成有效的XML元素名

Java中如何从字符串值生成有效的XML元素名,java,xml,Java,Xml,我试图从字符串值生成有效的XML标记 我举一个例子: String id = "hello world"; Expected XML tag: <hello_world> String id=“hello world”; 预期的XML标记: 这是一个简单的示例,但当字符串包含以下其他字符时,这会变得复杂: String id = "34/hello<he" Expected XML tag: <hello_he> or something valid like

我试图从字符串值生成有效的XML标记

我举一个例子:

String id = "hello world";
Expected XML tag: <hello_world>
String id=“hello world”;
预期的XML标记:
这是一个简单的示例,但当字符串包含以下其他字符时,这会变得复杂:

String id = "34/hello<he"
Expected XML tag: <hello_he> or something valid like this

String id=“34/hello解析字符串并替换特殊字符


对于元素数据,请使用字符实体。

这里有一种可能的算法

  • 将结果缓冲区初始化为“\u1”

  • 对于输入中的每个(Java 16位)字符:

  • (2a)如果字符是除下划线以外的有效名称字符,则将其附加到缓冲区

    (2b)否则,将_hhh附加到缓冲区,其中hhh是十六进制的字符代码


    此算法为每个输入字符串生成一个唯一的名称,并且是可逆的,因此您可以从生成的名称重构输入字符串。

    从下面的链接中,我们可以看出有效的XML遵循以下规则:1.元素名称必须以字母或下划线开头2.元素名称不能以字母XML(或XML或XML等)开头3.元素名称可以包含字母、数字、连字符、下划线和句点4.元素名称不能包含空格。编写一个接受字符串并替换不一致部分的方法应该不难。它可能需要运行多次(循环)检查字符串不会减少到符合的字符串。您可以尝试使用正则表达式。不确定您要做什么。是否需要替换任何非字母的内容?与
    /
    相比,如何确定
    /
    是否被删除?我正试图使用字符串值生成一个有效的元素名,遵循以下规则:这不仅仅是简单的gex,因为您需要在检测到有问题的部分后删除它们,然后重新验证。如果标记无效,但无法帮助将字符串更改为有效字符串,JAXB和其他框架可能会给您一个异常。@Sam是的,我知道这不是一个大问题,但我想知道这个问题是否已在某些API.Charac中得到解决元素和属性名称中不允许使用ter实体。