インターネットからXMLを解析し、そのデータの一部を単純なTextViewに表示しようとしています。ここに私のコードは次のとおりです。SAXParseException:AndroidでリモートXMLを解析しようとすると予期しないトークンが発生する
public class MainActivity extends AppCompatActivity {
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1=(TextView)findViewById(R.id.textView1);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
String UTF8 = "utf-8";
URL url = new URL("http://pollenapps.com/AllergyAlertWebSVC/api/1.0/Forecast/ForecastForZipCode?Zipcode=02145&Affiliateid=9642&AppID=2.1.0&uid=6693636764.xml");
URLConnection urlConnection = url.openConnection();
//InputStream in = new BufferedInputStream(urlConnection.getInputStream());
//BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
//InputStream in = new URL("http://pollenapps.com/AllergyAlertWebSVC/api/1.0/Forecast/ForecastForZipCode?Zipcode=02145&Affiliateid=9642&AppID=2.1.0&uid=6693636764.xml").openStream();
//getAssets().open("file.xml");
InputStream in = url.openStream();
//InputStream is2 = new FileInputStream(file);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//Document doc = dBuilder.parse(new InputSource(new InputStreamReader(in, "UTF-8")));
Document doc = dBuilder.parse(in, "UTF-8");
//Document doc = dBuilder.parse(in);
Element element = doc.getDocumentElement();
element.normalize();
NodeList nList = doc.getElementsByTagName("allergyForecast");
for (int i=0; i<nList.getLength(); i++) {
Node node = nList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element2 = (Element) node;
tv1.setText(getValue("Day0", element2));
}
}
} catch (Exception e) {e.printStackTrace();}
}
private static String getValue(String tag, Element element) {
NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = nodeList.item(0);
return node.getNodeValue();
}
}
意図したとおり、私はローカルファイルでそれを実行すると、このコードは動作します(これらのうち表彰、入力ストリームの1がローカルファイルのためです)が、私はからXMLファイルでそれを実行しようとすると、パーサが持つXMLファイルをコードの種類を言うことができないので、私はそれを定義する必要がありますようにそれはそういくつかの研究に基づいて
07-04 12:58:06.550 23289-23289/mystikos.pollentest W/System.err: org.xml.sax.SAXParseException: Unexpected token (position:TEXT {"[email protected]:990 in [email protected])
:インターネットは、私は次のエラーを取得します。しかし、私はここでそれを定義する方法がわかりません... "UTF-8"エンコーディングを定義しようとする私の試みは、コメントアウトされた行に表示されますが、それらは機能しませんでした。助言がありますか?
ありがとうございました!