我将tagoup用作 (SAX)XMLREader
并将命名空间功能设置为false
. 此解析器用于提供Transformer
SAX 源。完整代码:
final TransformerFactory factory = TransformerFactory.newInstance();
final Transformer t = factory.newTransformer(new StreamSource(
getClass().getResourceAsStream("/identity.xsl")));
final XMLReader p = new Parser(); // the tagsoup parser
p.setFeature("http://xml.org/sax/features/namespaces", false);
// getHtml() returns HTML as InputStream
final Source source = new SAXSource(p, new InputSource(getHtml()));
t.transform(source, new StreamResult(System.out));
这会导致类似:
< xmlns:html="http://www.w3.org/1999/xhtml">
<>
<>
<>
<>
< height="17" valign="top">
问题是标签名称是空白的。XMLReader(tagsoup 解析器)在 SAX 方法ContentHandler#startElement
和ContentHandler#endElement
. 对于不知道命名空间的解析器,这是允许的(参见Javadoc)。
如果我添加一个XMLFilter
将 qName 的值复制到 localName 的值,那么一切正常。但是,这不是我想要的,我希望这可以“开箱即用”。我究竟做错了什么?任何输入将不胜感激!