[原]Wordドキュメント解析using Jacob&HtmlParser
7622 ワード
JavaのWordの解析方法は、jacob呼び出しoffice comコンポーネントによるWordドキュメントオブジェクトの処理など、さまざまな方法が知られています.ここで紹介する方法は、jacobとHtmlParserを組み合わせてwordドキュメントの内容を解析することであり、この方法を利用してwordを解析するネットユーザーに役立つことを望んでいます.
1.wordをhtmlに変換
ここではJacobを用いてwordからhtmlへの変換を実現する.Jacobの使用はここでは詳しくは述べませんが、サーバー側にマイクロソフトのOfficeをインストールする必要があることが前提です(もちろんオペレーティングシステムもマイクロソフトの家が必要です).wordをhtmlに変換する機能はツール類Word 2 Htmlに書かれており(同様のやり方はネットワーク上で多く紹介されている)、wordに対する解析はhtmlに対する解析に変換される.
2.htmlの解析(using HtmlParser)
html解析を紹介する前に、wordドキュメントの内容構造を説明する必要があります.
タイトル番号のあるwordドキュメントでは、トップページから末尾ページまで番号に基づいて深さ遍歴ツリーと見なすことができます.隣接する番号の間には親子または兄弟関係があり、番号のある階層はタイトルフォーマットで定義されています.また、文書内で構造化されていると考えられる内容には、各種の約定フォーマットのタイトル、表、約定フォーマットの段落、項目記号、番号が含まれる.htmlに変換すると,HtmlParserを用いてこれらの構造化されたデータを容易に解析できる.解析されたデータが親子関係の参照を維持する必要がある場合は、htmlドキュメント内の解析オブジェクトの位置を記録する必要があります.HtmlParserにはこれらの機能があります.
HtmlParser APIでは、識別ノードは主にラベル名構築フィルタ(NodeFilter)によってNodeListを得るが、NodeListの中のNodeを処理し、HtmlParserの紹介についてはhttp://htmlparser.sourceforge.net/参照
次に、抽象クラスAbstractHtmlParserにカプセル化されたHtmlParser解析htmlの一般的な要素を適用するいくつかの一般的な方法について説明します.次に、いくつかの一般的な方法について説明します.
1.ノードの下にあるすべてのtextを取得する
たとえば、次のhtmlクリップは、「ABC」を返します.
2.ヘッダ付きテーブルを解析し、List
1.wordをhtmlに変換
ここではJacobを用いてwordからhtmlへの変換を実現する.Jacobの使用はここでは詳しくは述べませんが、サーバー側にマイクロソフトのOfficeをインストールする必要があることが前提です(もちろんオペレーティングシステムもマイクロソフトの家が必要です).wordをhtmlに変換する機能はツール類Word 2 Htmlに書かれており(同様のやり方はネットワーク上で多く紹介されている)、wordに対する解析はhtmlに対する解析に変換される.
2.htmlの解析(using HtmlParser)
html解析を紹介する前に、wordドキュメントの内容構造を説明する必要があります.
タイトル番号のあるwordドキュメントでは、トップページから末尾ページまで番号に基づいて深さ遍歴ツリーと見なすことができます.隣接する番号の間には親子または兄弟関係があり、番号のある階層はタイトルフォーマットで定義されています.また、文書内で構造化されていると考えられる内容には、各種の約定フォーマットのタイトル、表、約定フォーマットの段落、項目記号、番号が含まれる.htmlに変換すると,HtmlParserを用いてこれらの構造化されたデータを容易に解析できる.解析されたデータが親子関係の参照を維持する必要がある場合は、htmlドキュメント内の解析オブジェクトの位置を記録する必要があります.HtmlParserにはこれらの機能があります.
HtmlParser APIでは、識別ノードは主にラベル名構築フィルタ(NodeFilter)によってNodeListを得るが、NodeListの中のNodeを処理し、HtmlParserの紹介についてはhttp://htmlparser.sourceforge.net/参照
次に、抽象クラスAbstractHtmlParserにカプセル化されたHtmlParser解析htmlの一般的な要素を適用するいくつかの一般的な方法について説明します.次に、いくつかの一般的な方法について説明します.
1.ノードの下にあるすべてのtextを取得する
たとえば、次のhtmlクリップは、「ABC」を返します.
<td width=230 style='width:172.65pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span style='font-family:'>ABC</span></p>
</td>
protected String getAllTextInNode(Node node) {
StringBuffer sb = new StringBuffer();
if (node instanceof TextNode) {
TextNode textNode = (TextNode) node;
String text = textNode.getText().trim();
if (!StringUtil.isEmpty(text)) {
sb.append(text.replace(" ", " ").replace(">", ">")
.replace("<", "<").replace(""", "\"").replace(
"&", "&").replace("'", "'"));
}
} else if (node instanceof RemarkNode) {
// do nothing
} else if (node instanceof TagNode) {
TagNode tagNode = (TagNode) node;
NodeList nl = tagNode.getChildren();
if (null != nl) {
for (SimpleNodeIterator i = nl.elements(); i.hasMoreNodes();) {
sb.append(getAllTextInNode(i.nextNode()));
}
}
}
return sb.toString();
}
2.ヘッダ付きテーブルを解析し、List