我一直在通过网址进行一些JSON
和XML
解析。我正在使用的网址为JSONObject
,其中包含XML
。
这是我的代码,我为此做了些什么:
HttpClient hClient = new DefaultHttpClient();
HttpGet hGet = new HttpGet(
"URL for getting results");
ResponseHandler<String> rHandler = new BasicResponseHandler();
data = hClient.execute(hGet, rHandler);
JSONObject json = new JSONObject(data);
// get xml string form jsonObject
String str_xml = json.getString("output");
// now convert str_xml to xml document for xml parsing
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(str_xml));
Document doc = db.parse(inStream); // <<< getting xml Document here
以下是我JSONObject
的{{1}}:
XML
现在,我必须解析{
"output": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Results>\n <Feed prov=\"dmoz\">\n <ResultSet id=\"webListings\" source=\"DMOZ\">\n <Listing description=\" - A bike shop in Brisbane. Stocks mountain bikes, road bikes, and BMX bikes.\n \" rank=\"1\" siteHost=\"http://www.lifecycle.net.au/\" title=\"Lifecycle Bike Shop\">\n <ClickUrl type=\"body\">http://www.lifecycle.net.au/</ClickUrl>\n </Listing>\n <Listing description=\" - Videos and pictures taken of both sport bikes and dirt bikes.\n \" rank=\"2\" siteHost=\"http://roadanddirt.com/\" title=\"Road and Dirt\">\n <ClickUrl type=\"body\">http://roadanddirt.com/</ClickUrl>\n </Listing>\n</Results>"
}
并在列表视图中修复它们。以下是我得到的示例XML
:
XML
有人可以帮我修复列表视图中的这些内容。将不胜感激。
答案 0 :(得分:0)
下面提到的链接清楚地描述了如何在android中解析XML。之后,您可以创建一个listViewAdapter,并将数据插入到列表视图中。
http://developer.android.com/training/basics/network-ops/xml.html
这可以帮助您使用listView:
http://developer.android.com/guide/topics/ui/layout/listview.html
答案 1 :(得分:0)
创建一个新的xml文件。将xml内容写入其中。然后开始使用SAXParser解析该xml文件。
InputSource is = new InputSource(new InputStream(xml_file));
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
dataHandler = new UIXMLHandler();
xr.setContentHandler(dataHandler);
xr.parse(is);
<强> UIXMLHandler.java 强>
public class UIXMLHandler extends DefaultHandler {
@Override
public void startElement(String uri, String localName, String qName,Attributes atts){
//here find the appropriate element, get it's attribute value if exist.
}
@Override
public void endElement(String uri, String localName, String qName){
//element ends
}
@Override
public void characters(char[] ch, int start, int length){
String data = new String(ch, start, length);
data = data.trim();
//data is the value you are going to use.
}
}
希望这对你有所帮助。