アプリ版:「スタンプのみでお礼する」機能のリリースについて

web上のHTMLテキストを、handleText()を用いてタグとタグにはさまれたテキストのみを取り出そうと思っています。
しかし「」が「?」になってしまうのです。
たとえば、

<html>
<body>
3月27nbsp;日
</body>
</html>

と書かれたHTMLソースがあると、handleText()で取り出すと、「?3?月?27?日」となってしまいます。
どうすれば「」を「?」と表示させずに、「3月27日」と表示させることができるのしょうか?
よろしくお願いします。

A 回答 (2件)

swingのDocumentParserでなくて


外部のHTMLパーサを使ってみては?

僕はプロじゃないので、詳しくはわからないのですが、
このswingのDocumentParserは、
「一般用のHTMLパーサ」としては作られていないのでは?

僕はプロじゃないので、
実際の業務の現場で「HTMLパース用」に
何が使われてるのかは知らないのですが、
全くレスがない所をみると、
このswingのDocumentParserは、
一般には使われてない??
---

ちなみに「外部のHTMLパーサを使ってみては?」と書いたのは、
すくなくともHTMLソースの"非タグな部分"(※DocumentParserのhandleText()
で得られるような部分のこと)を、
なんの変換もされずに"ありのまま"に取得できさえすれば、
あとはどうにでもなる、ということを念頭においています。
(※"ありのまま"に取得、というのは、
HTMLソースの「3月27nbsp;日」という文字列を
そのままの文字列として取得する、ということ。この"ありのままの"文字列から
「」という文字列を取り除くのは単純な置換)

外部HTMLパーサで、このような「"ありのまま"取得」ができるのかどうか、
僕は知らないのですが、
少なくともswingのDocumentParserで「"ありのまま"取得」をやろうとすると、
ちょっと単純ではないみたい…?(※ほとんどパーサ部分を書き直すことになる
ような気がします。書き直すくらいなら、別のパーサを調べてみる価値は
あるのでは?)
    • good
    • 0

ちなみに




public class Maze extends HTMLEditorKit.ParserCallback {
public void handleText(char[] data, int pos) {
StringBuffer array=new StringBuffer();
for(int i=0;i<data.length;i++){
char ch=data[i];
System.out.println(ch+"="+(int)ch);
switch(ch){
case 160://
array.append("(^.^)");
break;
default:
array.append(ch);
}
}
System.out.println("--------------");
System.out.println(array);
}


public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(
new FileReader("index.html"));
ParserDelegator pd = new ParserDelegator();
pd.parse(br, new Maze(), true);
br.close();
} catch (IOException e) {}
}
}

/*
---index.htmlの内容---
<html>
<body>
3月27日
</body>
</html>
*/
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!