我如何解析文件构建器的输入流?

时间:2011-02-22 17:35:06

标签: java android xmlhttprequest

我正在制作一个Android应用程序,我正在制作一个httprequest来获取XML文档,我的httpEntity不会返回null,我正在尝试使用documentbuilderfactory来解析文件并从xml获取我需要的数据。

我有:

        DefaultHttpClient httpclient = new DefaultHttpClient();

        HttpGet httpPost = new HttpGet(URL);
        httpPost.addHeader("Authorization", getAuthHeader());

        HttpResponse response = httpclient.execute(httpPost);
        HttpEntity entity = response.getEntity();   

        InputStream is = entity.getContent();
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder(); 
        Document doc = db.parse(is);

此时我得到一个看起来像这样的错误异常

org.xml.sax.SAXParseException: expected: /hr read: body (position:END_TAG @10:8 in java.io.InputStreamReader@40564d70)

有没有人看过这个或知道我在做什么我找不到问题是什么,如果这个代码不够我可以提供更多,没有更多的工作正在完成,只是http请求。 我试图获得的“XML”文件看起来像这样

<ads>
  <ad>
    <id>6</id>
    <minViews>10</minViews>
    <duration>4</duration>
    <actionUrl>URL</actionUrl>
    <imageUrl>URL</imageUrl>
    <impressionCount>0</impressionCount>
  </ad>
<ads>

就是文件中的所有内容。我试图在两个位置获取URL。

2 个答案:

答案 0 :(得分:2)

看起来该文档是不符合XML的HTML。未终止的<hr>标签是一个死的赠品。 XML解析根本不适用于那些文档。

根据您对该文档的要求,您可能想要自己编写解析器,查找并调整现有解析器,或者使用WebView。

答案 1 :(得分:0)

你的xml缺少DTD,添加正确的doctype,你的解析就没问了。