ファイルから特定のタグを削除してHTMLファイルを変換する必要があります。拡張エスケープモードを使用したjsoup出力の問題
import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Entities;
import org.jsoup.nodes.Entities.EscapeMode;
import java.io.IOException;
import java.io.File;
import java.util.*;
public class TestJsoup {
public static void main(String[] args) throws IOException {
Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String url = args[0];
Document doc = null;
if(url.contains("http")) {
doc = Jsoup.connect(url).get();
} else {
File f = new File(url);
doc = Jsoup.parse(f, null);
}
/* remove some tags */
doc.outputSettings().escapeMode(Entities.EscapeMode.extended);
System.out.println(doc.html());
return;
}
}
上記のコードの問題は、私は、拡張エスケープモードを使用する場合、出力はHTMLでエンコードされたHTML属性タグを持っている、ということである - これを行うために、私はこのようなものを持っています。これを避けるためにとにかくありますか?非標準拡張(’
など)エンコーディングのいくつかが問題を引き起こすため、エスケープモードをベースまたはxhtmlとして使用すると機能しません。下記のHTMLのための元のために、私が手
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Test®</title>
</head>
<body style="background-color:#EDEDED;">
<P>
<font style="color:#003698; font-weight:bold;">Testing HTML encoding - ’ © with a <a href="http://www.google.com">link</a>
</font>
<br />
</P>
</body>
</html>
出力され、
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>

<title>Test®</title>

</head>

<body style="background-color:#EDEDED;">

<p>
 <font style="color:#003698; font-weight:bold;">Testing HTML encoding - ’ © with a <a href="http://www.g
oogle.com">link</a></font> <br />
</p>




</body>
</html>
は、この問題を回避するとにかくはありますか?
「&」がエスケープされないようにするにはどうすればよいですか?エスケープモードが 'Entities.EscapeMode.xhtml'に設定されている場合は、どのキャラクタセットでもエスケープされているようです。 – Randy
有効なHTML/XMLを生成するには、 '&'をエスケープする必要があるので、無効にするオプションはありません。 –