tagsoup as (SAX)を使用XMLREader
し、名前空間機能を に設定しますfalse
。このパーサーはTransformer
、SAX Source としてフィードするために使用されます。完全なコード:
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">
問題は、タグ名が空白であることです。ContentHandler#startElement
XMLReader (tagsoup パーサー) は、SAX メソッドおよびで空の namespaceURI と空のローカル名を報告しますContentHandler#endElement
。名前空間を認識しないパーサーの場合、これは許可されます ( Javadocを参照)。
XMLFilter
qName の値を localName にコピーする a を追加すると、すべてうまくいきます。ただし、これは私が望んでいるものではありません。これは「箱から出して」動作することを期待しています。私は何を間違っていますか?任意の入力をいただければ幸いです。