我想解析xml文件,如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<rsp status='ok'>
<status_id>1111</status_id>
<user_id>TwitUsername</user_id>
<media_id>ZZ83F</media_id>
</rsp>
我使用DOM来解析文件xml,如下所示:
public String getStatus()
{
String status="";
try {
InputStream is=this.getResources().openRawResource(R.raw.json);
Document xmlDoc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
Element root = xmlDoc.getDocumentElement();
NodeList rsp = root.getElementsByTagName("rsp");
for(int i=0;i<rsp.getLength();i++)
{
Node curNode = rsp.item(i);
// this tag is <study>, get `id` attribute first
status=String.valueOf(((Attr)curNode.getAttributes().item(0)).getValue());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return status;
}
但 getStatus 方法返回null。
答案 0 :(得分:1)
http://www.jondev.net/articles/Android_XML_SAX_Parser_Example
@Override
public void startElement(String namespaceURI, String localName, String qName,
Attributes atts) throws SAXException {
if (localName.equals("rsp")) {
System.out.println("The value of attribute 'status' is: " + atts.getValue("status"));
}
}
答案 1 :(得分:0)
尝试这种方法
public void getGeoLocation(Document doc)throws IOException {
NodeList nodeList, nchild;
Node currentNode, thisNode;
nodeList = doc.getElementsByTagName("rsp");
int length = nodeList.getLength();
for (int i = 0; i < length; i++) {
currentNode = nodeList.item(i);
nchild = currentNode.getChildNodes();
int clength = nchild.getLength();
for (int j = 0; j < clength; j++) {
thisNode = nchild.item(j);
if ("rsp".equals(thisNode.getNodeName())) {
org.w3c.dom.Element e1 = (org.w3c.dom.Element) thisNode;
String status = e1.getAttribute("status");
}
if ("status_id".equals(thisNode.getNodeName())) {
String status_id = thisNode.getTextContent();
}
if ("user_id".equals(thisNode.getNodeName())) {
String user_id = thisNode.getTextContent();
}
if ("media_id".equals(thisNode.getNodeName())) {
String media_id = thisNode.getTextContent();
}
}
}
}