java-当解析 XML 时出现的错误

问题描述

当解析 XML 时出现的错误

在应用程序打开之前 XMLParser 就崩溃了。错误是:

org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)

XMLParser 代码:

public class XMLParser {
    public XMLParser(){
    }
    public String getXmlFromUrl(String url){
        String xml = null;
        try{
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            xml = EntityUtils.toString(httpEntity);
        } catch (UnsupportedEncodingException e){
            e.printStackTrace();
        } catch (ClientProtocolException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return xml;
    }
    public Document getDomElement(String xml){
        Document doc = null;
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try{
            DocumentBuilder db = dbf.newDocumentBuilder();

            InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(xml));
            doc = db.parse(is);
        } catch(ParserConfigurationException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (SAXException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        } catch (IOException e) {
            Log.e("Error: ", e.getMessage());
            return null;
        }
        return doc;
    }
    public final String getElementValue(Node elem) {
        Node child;

        if(elem != null){
            if(elem.hasChildNodes()){
                for(child = elem.getFirstChild(); child != null; child = child.getNextSibling()){
                    if(child.getNodeType() == Node.TEXT_NODE){
                        return child.getNodeValue();
                    }
                }
            }
        }
        return "";
    }
    public String getValue(Element item, String str){
        NodeList n = item.getElementsByTagName(str);
        return this.getElementValue(n.item(0));
    }
}

在 main activity 中是这样调用的:

XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL);
Document doc = parser.getDomElement(xml);

所以问题出在哪里呢?

解决方案

添加:

 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
 StrictMode.setThreadPolicy(policy);

解决方案二:

LZ的网络请求返回都不用判断状态?直接就调用 HttpEntity httpEntity = httpResponse.getEntity();xml = EntityUtils.toString(httpEntity);
???

解决方案三:

你的url是否有问题?

时间: 2024-10-31 17:03:38

java-当解析 XML 时出现的错误的相关文章

通过Java DOM解析 XML时碰到中文无法整体返回,只能返回一个第一个中文

问题描述 XML文件大概如下,通过DOM去解析,但是如果元素中含有中文,则无法整体返回字符串,只能返回一个第一个中文,如"蒙":XML文件一:<posts type="array"><post><content>Source Milk Title</content><created-at type="datetime">2011-05-30T12:47:58Z</created-a

java 解析xml文件-在JAVA中解析XML文件时遇上难题,向各位大虾求助。

问题描述 在JAVA中解析XML文件时遇上难题,向各位大虾求助. 在服务器进程中编写登录时出现以下错误提示: Exception in thread "Thread-0" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl cannot be cast to javax.swing.text.Document at server.ServerThread.Lo

java-求助SAX解析XML时为什么不加上stack.pop()无法打印出元素文本内容?

问题描述 求助SAX解析XML时为什么不加上stack.pop()无法打印出元素文本内容? package com.shengsiyuan.xml.sax; import java.io.File; import java.util.Stack; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.s

java dom-关于Java Dom 解析XML后,在TableTreeView下的修改问题

问题描述 关于Java Dom 解析XML后,在TableTreeView下的修改问题 最近在看Java解析XML的相关资料,在尝试用DOM解析时,出现一些小问题. 用DOM解析XML后,在TableTreeView里显示,然后调用了 ViewerColumn 中的 setEditingSupport() 方法,对XML标签间 TextContent 进行修改,但是在判断能否修改时产生了一些问题,不知道如何在 canEdit() 中进行判断,要求只对标签的TextContent进行编辑. pro

java DOM 解析XML

问题描述 javaDOM解析XML时,如果XML包含<!DOCTYPEcoveritySYSTEM"config.dtd">就会出错,报错的是无法找到"config.dtd",解析XML时该怎么避免此错误?

pom xml-创建maven项目时pom.xml时出现如下错误 求解

问题描述 创建maven项目时pom.xml时出现如下错误 求解

java dom4j解析xml,用的是dom4g解析

问题描述 java dom4j解析xml,用的是dom4g解析 下面数据格式 需要获取标签值 解决方案 Java Dom4j解析 xmlJava -- XML解析工具dom4jJava中解析XML的四种常用方法(4)_DOM4J解析---------------------- 解决方案二: 你怎么传图片呢?传文字上去我们可以直接粘贴复制测试

java中解析xml,要求在控制台输出但是输出的是null

问题描述 java中解析xml,要求在控制台输出但是输出的是null package pero.common.Metied; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import javax.xml.bind.JAXBContext; import java

java读取解析xml文件实例_java

读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件转换为 dom树形结构,通过节点进行遍历. 这是W3c关于节点的概念 如果xml中包含有大量的数据,由于dom一次性把xml装入内存中的特性,所以dom不适合于包含大量数据的xml解析.当包含有大量xml的时候,用SAX进行解析比较节省内存. 下面是一个运用DOM进行解析xml文件的例子: xml文件结构如下: <?xm