Dom4j 如何将这样的字符串转换为XML

IAM_YXQ 2015-08-22 12:04:52
<a:A>
<a:B></a:B>
</a:A>

Document doc = DocumentHelper.parseText(str);
这样报错

如果是:

<a><b></b></a>

这样是正确的
...全文
93 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuangqingch 2015-08-22
  • 打赏
  • 举报
回复
加了冒号,字符a会被当成命名空间来使用,但由于没有先声明命名空间再使用,所以会出现异常,可加下声明,具体如下: <a:A xmlns:a="http://www.w3.org/TR/html4/"> <a:B></a:B> </a:A> 建议楼主先熟悉下XML的相关知识、再深入看下Dom4J的文档解析处理的相关源代码,org.dom4j.DocumentHelper.parseText()低层实际是采用Xerces(apache组织接管的一个开放源代码的XML语法分析器,从JDK1.5以后,Xerces就成了JDK的XML默认实现)来处理, 关于楼主的疑问,楼主只需要完成以下几件事件就可以解决心中的疑问了。 一、了解XML的相关规范(以1.0版本为主吧),如元素命名规范,命名空间规范、可参考: http://www.w3school.com.cn/xml/xml_elements.asp http://www.w3school.com.cn/xml/xml_namespaces.asp 二、可以详细看下Xerces组件对于XML文档解析相关的几个关键类: 1、com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl XML文档扫描器(文档头声明等信息扫描解析),负责文档解析 可以看下关键方法scanDocument(boolean complete),注意该方法继续自XMLDocumentFragmentScannerImpl 2、com.sun.org.apache.xerces.internal.impl.XMLEntityScanner XML文档内容扫描器(文档标签、属性等信息扫描解析) 可以看下scanName()方法 3、XMLChar XML字符,该类主要是规范XML的字符范围、有效性等。关键方法有isNameStart(判断元素名首字符是否合法),isName(是否有效的元素名(单字符)) isValidName(是否有效的元素名(整个元素名称)) 解析XML文档,无非就是获取文档内容、扫描并解析(当然,其实涉及到XML文件规范,其实也相当复杂的=。=)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧