String could not be parsed as XMLの対策
String could not be parsed as XMLの原因について、肝心の対策を書いてなかったので書いておきます。
(HTMLScrapingに同梱されている)HTMLParser.classを使ってHTMLを整形式のXML文書に修正する場合です。
HTMLParser.classのバージョンは1.2.1です。
727行目(「不適切に用いられている解析対象記号の置換」について書かれているfunction _escapeCharsの末尾)に以下の行を追加
$string = preg_replace('/\x0b/', '', $string);
これだけです。
\x0bは垂直タブの制御コードです。
他の制御コードがでてきたときには追加していかないといけませんね。
制御コードを一括指定できればいいんですけど、そんな都合のいい方法はない(……ですよね?)。残念。