实际开发中利用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 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);