1. 概述
本文为您介绍 XML解析 相关问题。
2. XML 数据结构是否标准
异常现象:
选择节点是会报错:com.fr.dp.exception.FineDPException: xml data stream error - 具体原因-出错的位置
排查步骤:
1)排查 XML 格式的数据是否合法
2)标签、结构是否完整:
3)特殊字符是否转义
报错及解决方案:
报错 | 原因 | 解决方案 |
---|---|---|
XML示例数据: <person> 报错: com.fr.dp.exception.FineDPException: xml data stream error - Illegal to have multiple roots (start tag in epilog?). at [row,col {unknown-source}]: [6,6] - Illegal to have multiple roots (start tag in epilog?). at [row,col {unknown-source}]: [6,6] | 缺少根节点标签 | 添加一个根节点 |
XML示例数据: <person> 报错: com.fr.dp.exception.FineDPException: xml data stream error - Unexpected close tag </person>; expected </name>. at [row,col {unknown-source}]: [17,33] - Unexpected close tag </person>; expected </name>. at [row,col {unknown-source}]: [17,33] | 标签交叉 | 修改标签位置 |
XML示例数据: <text> 报错: com.fr.dp.exception.FineDPException: xml data stream error - Unexpected character '2' (code 50) in content after '<' (malformed start element?). at [row,col {unknown-source}]: [31,17] - Unexpected character '2' (code 50) in content after '<' (malformed start element?). at [row,col {unknown-source}]: [31,17] | 特殊字符没转义 | 若需要转义的字符较多,可以使用CDATA标签,让xml解析器忽略特殊字符,作为字符数据处理
或者使用 replace 函数替换转义字符 |
XML示例数据: <person> 报错: com.fr.dp.exception.FineDPException: xml data stream error - Unexpected character '2' (code 50) in start tag Expected a quote at [row,col {unknown-source}]: [37,19] - Unexpected character '2' (code 50) in start tag Expected a quote at [row,col {unknown-source}]: [37,19] | 属性没添加引号 | 属性添加引号 |
XML示例数据: <person> 报错: com.fr.dp.exception.FineDPException: xml data stream error - Unexpected close tag </Person>; expected </person>. at [row,col {unknown-source}]: [44,12] - Unexpected close tag </Person>; expected </person>. at [row,col {unknown-source}]: [44,12] | 标签大写 | 修改大写的标签 |
3. 数据预览异常
异常现象:
选择节点可以正常显示,但是预览异常,空白或者异常报错。
报错:
命名空间写错了/命名空间修改后xml节点没有重新选择
com.fr.dp.exception.FineDPException: Spark执行错误 - xml namespace error -具体的命名空间
排查步骤:
是否存在命名空间,命名空间是否正常书写
xml路径是否正确
报错及解决方案:
报错 | 原因 | 解决方案 |
---|---|---|
com.fr.dp.exception.FineDPException: Spark执行错误 - xml namespace error - http://www.w3.org/2003/05/soap-envelope namespace uri is not exist in xml data - xml namespace error - http://www.w3.org/2003/05/soap-envelope namespace uri is not exist in xml data | 命令空间修改之后xml节点没有重新选择 导致xpath路径没有更新,导致的错误 | 重新选择xml节点,更新xpath路径 |
4. 其他报错
字段解析异常
问题描述:
XML 解析某个字段,该字段解析顺序放到第一位就可以正常解析值,不在第一位预览空白。
解决方案:
升级到 4.0.26 及之后版本。