Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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 org.w3c.dom.Node.setNodeValue()未编码某些特殊字符_Java_Xml_Encoding_Xmlnode - Fatal编程技术网

Java org.w3c.dom.Node.setNodeValue()未编码某些特殊字符

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只编码,'或“这只是因为它不需要转义,'或” 引号只需要在使用相同类型引号打开的属性中进行编码

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

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()
是正确的方法?