2013-08-18 138 views
1

我编写了这段代码来解析XML字符串,但它不起作用。没有错误,但它没有给出任何输出。Android应用程序中的XML解析

我的XML字符串:

String xml = "<ArrayOfString>" + "<string>{" + "categoryId"+":1," + 
    "Title" +":"+"Rock"+"," + "songs" +":" +" null}</string>" + "</ArrayOfString>"; 

代码:

try { 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     Document doc = db.parse(xml); 
     doc.getDocumentElement().normalize(); 

     NodeList nodeList = doc.getElementsByTagName("ArrayOfString"); 

     item = new TextView[nodeList.getLength()]; 
     for (int i = 0; i < nodeList.getLength(); i++) { 
      Node node = nodeList.item(i); 
      item[i] = new TextView(this); 

      Element fstElmnt = (Element) node; 
      NodeList itemList = fstElmnt.getElementsByTagName("string"); 
      Element itemElement = (Element) itemList.item(0); 
      itemList = itemElement.getChildNodes(); 
      item[i].setText("item = " 
          + ((Node) itemList.item(0)).getNodeValue()); 

      layout.addView(item[i]); 
     } 
    } 
    catch (Exception e) { 
     System.out.println("XML Pasing Excpetion = " + e); 
    } 

    /** Set the layout view to display */ 
    setContentView(layout); 
} 

回答

1

的问题是,你打电话DocumentBuilder.parse(String)其目的是要接受一个URL作为它的参数,而不是实际的XML。

最简单的替代方案可能是使用从StringReaderInputSource阅读:

StringReader reader = new StringReader(xml); 
InputSource source = new InputSource(reader); 
Document doc = db.parse(source);