Java org.w3c.dom.Node.setNodeValue()未编码某些特殊字符
使用Java,我将xml文件中Java org.w3c.dom.Node.setNodeValue()未编码某些特殊字符,java,xml,encoding,xmlnode,Java,Xml,Encoding,Xmlnode,使用Java,我将xml文件中属性的值设置为 String val=“~!@$%^&*({}+-={}}124;[\\:\”;”?,./;“ 当我尝试将api与输入一起使用时 org.w3c.dom.Node.setNodeValue(val) 看看xml,我看到结果xml中的value属性是这样的- ~!@$%^&;*({}+-={}124;[]\:“;”>/ 我试图弄明白为什么这个第三方API只编码,'或“这只是因为它不需要转义,'或” 引号只需要在使用相同类型引号打开的属性中进行编码
属性的值设置为
String val=“~!@$%^&*({}+-={}}124;[\\:\”;”?,./;“
当我尝试将api与输入一起使用时
org.w3c.dom.Node.setNodeValue(val)
看看xml,我看到结果xml中的value属性是这样的-
~!@$%^&;*({}+-={}124;[]\:“;”>/代码>
我试图弄明白为什么这个第三方API只编码
,'
或“
这只是因为它不需要转义
,'
或”
引号只需要在使用相同类型引号打开的属性中进行编码(因此foo=“single'quote”
或bar='double'quote'
是可以的),并且闭合角括号也不需要编码,因为当您不可能闭合元素时,它没有任何意义
无论如何,对它们进行编码是完全有效的,但不这样做也是有效的。但是如果这些字符被用作html标记的一部分呢?如果value属性包含这些特殊字符呢?尤其是
?这不能被视为html标记的结束吗?我说的是一种我们正在阅读的情况从xml中提取并写入html。@AlwaysALearner:你不应该期望xml库关心html想要什么。但坦率地说,我也希望html能够处理这些。你不能在属性的中途关闭元素,对吗?我知道浏览器在解析时往往很宽容,但我希望有效的xml在这个ca中是有效的htmlse.@AlwaysALearner如果“是”,这是否意味着Node.setTextContent()
是正确的方法?