• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Xercesを使ったjavaでのXML解析)

Xercesを使ったJavaでのXML解析エラーの解決方法

このQ&Aのポイント
  • JavaのソースコードでXML文書を解析する際、XercesのDOMパーサを使用している際にエラーが発生しました
  • エラーの内容は「The entity name must immediately follow the '&' in the entity reference」というものでした
  • このエラーの解決策や、Javaのネットワークプログラミングに詳しい方に教えていただきたいです

質問者が選んだベストアンサー

  • ベストアンサー
  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

結論から言ってしまうと、Javascriptの入ったHTMLはDOMパーサーでは解析できません。 &、<、>が入っているため、ValidなXMLではないためです。 私だったら、下記のHTMLパーサを使用します。 http://jsoup.org/ -------以下サンプル package test; import java.net.URLEncoder; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class Test { public static void main(String[] args) throws Exception{ Document document = Jsoup.connect("https://twitter.com/search?q="+URLEncoder.encode("日経ソフトウェア","utf-8")).get(); System.out.println(document.getElementsByTag("title")); } }

tmiyoshi
質問者

お礼

jsoupで作成したDocumentから Elements classes = document.select("[class]"); for (Element identifier : classes) { if(identifier.className().equals("fullname js-action-profile-name show-popup-with-id")) { System.out.println(identifier.text() + "さんのツイート"); } if(identifier.className().equals("js-tweet-text tweet-text")) { System.out.println("\t" + identifier.text()); } } とすることで質問のプログラムでやりたいことはできるようになりました。 TwitterのSearch APIは今年の3月のV1.0 -> V1.1の仕様変更でかなり使い方が変わってしまったようです。以前は、<author>や<name>のタグを使ってDOMの構文解析をすればできていたようですが、V1.1からはJavaScriptを使うようになってしまったためか、その仕様が全然変わってしまったみたいです。 ありがとうございました。