5

JAVAに整形式ではないxml(HTML)データがいくつかあり、JAXP Domを使用しましたが、文句を言います。

質問は:JAXPを使用してそのようなドキュメントを解析する方法はありますか?

次のようなデータを含むファイルがあります:

<employee>
 <name value="ahmed" > <!-- note, this element is not closed, So it is not well-formed xml-->
</employee>
4

3 に答える 3

8

最初にjtidyAPIを使用してドキュメントを実行してみてください。これにはhtmlを有効なxhtmlに変換する機能があります:http://jtidy.sourceforge.net/howto.html

Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.parse(......)...
于 2010-04-01T13:55:08.407 に答える
8

TagSoupを使用できます。私はそれを大成功で使用しました。SAX、DOM、XSLT、StAXなどのJavaXMLAPIと完全に互換性があります。たとえば、XSLT変換を特に貧弱なHTMLに適用するためにこれを使用した方法は次のとおりです。

public static void transform(InputStream style, InputStream data)
        throws SAXException, TransformerException {
    XMLReader reader =
        XMLReaderFactory.createXMLReader("org.ccil.cowan.tagsoup.Parser");
    Source input = new SAXSource(reader, new InputSource(data));
    Source xsl = new StreamSource(style);
    Transformer transformer =
        TransformerFactory.newInstance().newTransformer(xsl);
    transformer.transform(input, new StreamResult(System.out));
}
于 2010-04-01T13:58:26.210 に答える
1

あまり。JAXPは整形式のマークアップを望んでいます。Cyber​​neko HTMLパーサーを検討しましたか?当店では大成功を収めています。

編集:あなたもXMLを解析したいと思っているようです。うーん....Cyber​​nekoはHTMLでうまく機能しますが、他の人については知りません。一部のタグを閉じるタグバランサーがありますが、HTML以外のタグを認識するようにトレーニングできるかどうかはわかりません。

于 2010-04-01T13:51:37.940 に答える