Java中如何从字符串值生成有效的XML元素名
我试图从字符串值生成有效的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
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实体。