我的 android 应用程序中的解析存在一些实际问题。我正在使用 DOM 样式解析器提取一些 XML 文件,它需要将近 20 秒的时间来完成并在它们上运行一些代码,这些文件不超过 30KB。
这是从该方法中获取的一些代码:
代码如下:
HttpURLConnection vehicles_conn = (HttpURLConnection) new URL("XXXXXXX").openConnection();
vehicles_conn.setRequestMethod("POST");
vehicles_conn.setDoInput(true);
vehicles_conn.setDoOutput(true);
vehicles_conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
vehicles_conn.setChunkedStreamingMode(0);
String vehicles = URLEncoder.encode("LogonToken", "UTF-8") + "=" + URLEncoder.encode(gettoken, "UTF-8");
OutputStream vehicles_os = vehicles_conn.getOutputStream();
Writer vehicles_wr = new OutputStreamWriter(vehicles_os);
vehicles_wr.write(vehicles);
vehicles_wr.flush();
InputStream vehicles_is = vehicles_conn.getInputStream();
vehicles_wr.close();
DocumentBuilderFactory vehicles_dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder vehicles_dBuilder = vehicles_dbFactory.newDocumentBuilder();
Document vehicles_doc = vehicles_dBuilder.parse(vehicles_is);
NodeList vehicles_nList = vehicles_doc.getElementsByTagName("UNIT");
for (int temp = 0; temp < vehicles_nList.getLength(); temp++) {
//Create a new vehicle object
Vehicle v = new Vehicle();
Node vehicles_nNode = vehicles_nList.item(vehicles_temp);
if (vehicles_nNode.getNodeType() == Node.ELEMENT_NODE) {
Element vehicles_eElement = (Element) vehicles_nNode;
String something = (getTagValue("ID", vehicles_eElement));
.........
现在,我有其中的 3 个(http 连接仅在方法中调用一次),它在第一个 XML 文件中运行 26 个“单元”——我们称之为 XML1,然后迭代第二个,XML2 和 25' Places',直到 ID 字段与 XML1 匹配,然后抓取 XML2 的一些其他字段并将它们存储到 arraylist 中,然后对带有 'Peopel' 的 XML3 执行相同的操作。完成后,它会返回顶部并从列表中的下一个 ID 重新开始。
现在,我的问题是,理想情况下,这个过程需要不到几秒钟,它需要 20 秒!根据记录,这是通过 LG Nexus 4 上的 20Mbit 的 Wifi。可以通过 Motoral Defy 和 Galaxy Ace 2 复制。有谁知道它为什么这么慢?
我是 Java/Android 的新手,所以我不知道我是否编码错误,或者 XML 解析速度很慢?