Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XML属性转换为有效的HTML属性值?_Java_Xml_Tomcat - Fatal编程技术网

Java 将XML属性转换为有效的HTML属性值?

Java 将XML属性转换为有效的HTML属性值?,java,xml,tomcat,Java,Xml,Tomcat,我正在Tomcat6.0.33应用服务器上使用Java6。我得到了必须作为表单元素呈现的XML。我收到的XML看起来像 <pquotec type='input' label='Price Quote Currency' nwidth='200' vlength='10'> XYZ </pquotec> XYZ 下面是所需的输出 <label for="#valid_id_goes_here">Price Quote Currency<

我正在Tomcat6.0.33应用服务器上使用Java6。我得到了必须作为表单元素呈现的XML。我收到的XML看起来像

 <pquotec type='input' label='Price Quote Currency' nwidth='200' vlength='10'>
   XYZ
 </pquotec>

XYZ
下面是所需的输出

 <label for="#valid_id_goes_here">Price Quote Currency</label>
 <input type="text" size="10" style="width:200px;" value="XYZ" name="#valid_name_goes_here#" id="#valid_id_goes_here#" />
报价货币
我的问题是,将存储在XML元素的label属性中的值转换为我可以用上面的“#valid_name_goes_here#”替换的值的策略是什么?最好这个策略能让我再次翻译。请注意,在“”中出现的内容可能不一定适合id和name的值

感谢您的帮助,-Dave

使用-下面是一个将XML转换为HTML的示例,但是将XML转换为XML也很简单

在java中,可以使用XSLT,也可能对您有所帮助

如果您想使用JSP进行XML解析并呈现目标HTML,请参阅以获取XML解析器列表

编辑:

嗯,您可以在没有XML和HTML片段的情况下编写这个问题,并简单地询问如何将任何字符串转换为有效的HTML Id,然后再返回

使用
data-
HTML存储原始传入字符串。然后使用正则表达式从传入字符串中提取有效字符,用下划线替换所有无效字符,并将其用作ID。很可能会得到重复的ID。在这种情况下,您可以随时返回并使XML以一种没有重复的方式出现


通过这种方式,您可以返回原始字符串并获得有效的ID。输入元素的name属性被定义为具有类型CDATA,这基本上意味着“任何字符数据”,因此我认为应该不会有问题


如果您确实遇到了有效性问题,您可以将任何“笨拙”(或干脆全部)字符转换为其编码形式。例如,é将变成é

XSLT可以做到这一点。这对您来说是一个选项吗?嗨,实际上我的问题是寻找一种算法来将标签(如“Price Quote Currency”)转换为HTML“id”属性的有效值。显然,“价格报价货币”本身不起作用,因为id字段中的空格无效。你明白我在问什么吗?是的,但是如果标签是“价格和货币”,表达式id=“价格和货币”就不会飞。同样,转换为id=“价格和货币”也可能无法飞行。我不在乎id=”“表达式是什么,但我需要它是有效的,并且需要从标签表达式派生它(然后再返回)。这有意义吗?这个问题完全有意义。您的第一篇帖子提到了“#valid_name_goes_here#”,因此我关注的是name属性(“valid_go_here#”被向右滚动;-)。现在我看到id属性仍然是个问题。由于id属性的类型是id,它只允许A-Za-z和数字,因此您需要滚动自己的编码。一种简单的方法是用十六进制的Unicode代码点替换每个字符。id也必须以字母开头。因此,“XYZ”将变成“id00580059005A”。这是明确的,也支持往返。