HTMLCleaner 转化html到xml报出namespace的错误

实际开发中利用HTMLCleaner转化html为xml的操作中报出:

Error on line 2 column 52 
  SXXP0003: Error reported by XML parser: 前缀 "xml" 不能绑定到除它的常用名称空间外的任何名称空间; "xml"
  的名称空间也不能绑定到除 "xml" 外的任何前缀。
net.sf.saxon.trans.XPathException: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 52; 前缀 "xml" 不能绑定到除它的常用名称空间外的任何名称空间; "xml" 的名称空间也不能绑定到除 "xml" 外的任何前缀。
	at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:418)
	at net.sf.saxon.event.Sender.send(Sender.java:214)
	at net.sf.saxon.event.Sender.send(Sender.java:50)
	at net.sf.saxon.Configuration.buildDocument(Configuration.java:2973)
	at net.sf.saxon.query.StaticQueryContext.buildDocument(StaticQueryContext.java:211)

通过异常描述可以断定为由于html的格式问题导致转化失败.

查看html页面,其中

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh_CN" lang="zh_CN">
分析可知namespace是最终原因,查阅htmlcleaner的源码发现它有一个属性设置CleanerProperties,其中可以设置忽略namespace,即namespacesAware 设置为false即可,默认值是true.
eg.我的应用中设置方式:properties.setNamespacesAware(false);

你可能感兴趣的:(htmlclearner)