org.w3c.dom.Node.setNodeValue()不对某些特殊字符进行编码

时间:2014-08-27 05:48:27

标签: java xml encoding xmlnode

使用Java,我将xml文件中的<value>属性的值设置为

String val = "~!@#$%^&*()_+-={}|[]\\:\";'<>?,./;"

当我尝试将api用于输入

org.w3c.dom.Node.setNodeValue(val)

并查看xml,我看到生成的xml中的value属性看起来是这样的 -

<Value>~!@#$%^&amp;*()_+-={}|[]\:";'&lt;>?,./</Value>

我试图弄清楚为什么第三方API仅编码<&,而不是>'"

1 个答案:

答案 0 :(得分:1)

这只是因为它不需要来逃避>'"

引号只需要在使用相同类型的引号打开的属性中进行编码(因此foo="single'quote"bar='double"quote'很好)并且结束角括号不需要要编码,因为当你不可能关闭元素时它没有任何意义。

无论如何对它进行编码完全有效 - 但这样做也是有效的。