XML file
<Response>
<Type>1</Type>
<Content>
想睡覺
</Content>
<NodeId>00147070853775200944005056ba786b</NodeId>
<ModuleId>core</ModuleId>
<Similarity>1.0</Similarity>
<Commands>
<Command name="weather" state="1">
<Arg>北京</Arg>
<Arg/>
<Arg/>
</Command>
</Commands>
<RelatedQuestions>
<Question>123</Question>
<Question>456</Question>
</RelatedQuestions>
</Response>
public class MainActivity extends AppCompatActivity {
private Handler mHandler = new MainActivityHandler(this);
public static Button btnDomstic, btnForegin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GetData getMegaNumber = new GetData();
getMegaNumber.getData();
}
}
public class httpGetXML {
public String getHtmlByGet(String _url) {
String result = "";
HttpClient client = new DefaultHttpClient();
try {
HttpGet get = new HttpGet(_url);
HttpResponse response = client.execute(get);
HttpEntity resEntity = response.getEntity();
if (resEntity != null)
{
//result = EntityUtils.toString(resEntity);
result = EntityUtils.toString(response.getEntity(),"UTF-8");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
client.getConnectionManager().shutdown();
}
return result;
}
}
public class GetData {
String TAG="GetData";
String retstrXML;
String retstr;
ExecutorService executor = Executors.newFixedThreadPool(1);
runGetXml gXML = new runGetXml();
Future<String> future = executor.submit(gXML);
Document doc;
public void getData ()
{
try {
retstrXML = future.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
doc=getDomElement(retstrXML);
NodeList nl = doc.getElementsByTagName("Content");
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
retstr = nl.item(i).getTextContent();
Log.i(TAG, "aaaaaaaaaa2="+retstr);
}
}
private class runGetXml implements Callable<String>
{
String ret;
@Override
public String call() throws Exception {
httpGetXML hGet = new httpGetXML();
ret=hGet.getHtmlByGet("http://Html Address to link a XML data by html-get);
Log.i(TAG, "ret="+ret);
return ret;
}
}
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;
}
Log.i(TAG, "doccccccc="+doc);
// return DOM
return doc;
}
public String getValue(Element item, String str) {
NodeList n = item.getElementsByTagName(str);
return this.getElementValue(n.item(0));
}
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 "";
}
}
ref :
android-xml-parsing-tutorial
沒有留言:
張貼留言