dom4j解析标签名中含有特殊字符报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom4j解析标签名中含有特殊字符报错相关的知识,希望对你有一定的参考价值。

<root><body><commit_timestamp$>123145645</commit_timestamp$></body></root>
如当解析上诉xml时标签内带有$就报错,有解决办法吗

参考技术A XML 元素必须遵循以下命名规则:
名称可以含字母、数字以及其他的字符
名称不能以数字或者标点符号开始
名称不能以字符 “xml”(或者 XML、Xml)开始
名称不能包含空格
可使用任何名称,没有保留的字词。

但是某些解析工具可能对特殊字符处理有问题,尤其是($\#等),所以解决的办法就是尽量使用英文字母!追问

你说的意思就是告诉我你不知道解决办法是不

追答

命名标签时,别用$或者#好这种特殊字符...
要尽量符合规范...

名称可以含字母、数字以及其他的字符 (这个其他字符定义的不是很清晰,所以要谨慎使用啊)

追问

是我知道,但是这个xml不是我定的,我只是负责解析,我说在不改变xml的原格式的方法上有没有办法

追答

我刚才试了一下纯dom解析时,因为存在$所以创建document时读取的xml文档格式是错误的,和dom4j报错一致!所以推测利用其他现有xml解析工具,解析结果一样报错!!

总结解决方式我认为有两种:
1. 在解析前对XML文件进行预处理,把$屏蔽掉!
2. 你自己实现一个解析器(实际上就是匹配)

能力有限,目前就想到这两种方式了

本回答被提问者采纳

JSON.parse解析特殊字符报错的解决办法

参考技术A          let str = JSON.stringify(arr)

         str = encodeURIComponent(str)

   <-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.->

         arr = JSON.parse(decodeURIComponent(str))        // 再还原

《=====================================================》

JSON.stringify() : 用于将 JavaScript 值转换为 JSON 字符串;

JSON.parse() :用于将一个 JSON 字符串转换为对象;

encodeURIComponent() :可把字符串作为 URI 组件进行编码,该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) ,其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的(链接:https://www.runoob.com/js/javascript-json-stringify.html);

decodeURIComponent() :可对 encodeURIComponent() 函数编码的 URI 进行解码(链接:https://www.runoob.com/jsref/jsref-decodeuricomponent.html)。

以上是关于dom4j解析标签名中含有特殊字符报错的主要内容,如果未能解决你的问题,请参考以下文章

java后台怎么解析含有特殊字符的json字符串,如含有逗号,冒号等特殊字符

js, ie8 下 特殊字符导致转成json对象报错

【求助】Dom4j 生成xml,节点增加属性时,属性值中有特殊字符,如何做到不转义

JSON.parse解析特殊字符报错的解决办法

XML 解析 & 特殊字符报错

ajax传参里含有特殊字符的坑